Jav*_*ser 1 java singleton synchronization design-patterns
为什么我们需要在锁定之前和之后检查null?有一次,我们获得了锁,没有线程可以拥有锁,那为什么在同步块之前不需要空检查?
public class DclSingleton {
private static volatile DclSingleton instance;
public static DclSingleton getInstance() {
**if (instance == null) {**
synchronized (DclSingleton .class) {
**if (instance == null) {**
instance = new DclSingleton();
}
}
}
return instance;
}
// private constructor and other methods...
}
Run Code Online (Sandbox Code Playgroud)
想象一下下一个场景:
instance == null
并发现此条件为真.instance == null
并发现此条件为真.instance = new DclSingleton()
.instance = new DclSingleton()
.我们有双重初始化. 归档时间: |
|
查看次数: |
96 次 |
最近记录: |