临时对象是否可以安全地进行双重检查锁定?瞬态对象是否可以安全地进行双重检查锁定?
private transient java.lang.ThreadLocal __hashHistory;
public int hashCode() {
if (__hashHistory == null) {
synchronized (this) {
if (__hashHistory == null) {
__hashHistory = new java.lang.ThreadLocal();
}
}
}
或者该对象是否需要变化?
我不明白瞬态变量如何与双重检查锁定相关。如果应用双重检查锁定,我相信volatile将只是一个开销,因为您将实现一个同步块。所以答案是没有任何修饰符的私有变量就足够了。 – 2014-09-05 19:51:22
我认为这可能与之相关的原因是因为我们以前的防御工事报告没有重复检查锁定问题,而且我知道这段代码在该防御工事期间已经到位。因此,无论是前一个强化代码的人发现某种原因,都不打算解决双重检查的锁定问题,或者他们没有意识到这是当时的问题/在设防时没有被识别为问题发生(大约6年前)。 – Zibbobz 2014-09-05 20:01:19
也许transient序列关键字被放置在那里用于序列化目的,这不会以任何方式影响双重检查的锁定过程。 – 2014-09-05 20:07:40