非易失性场的出版和读取
public class Factory {
private Singleton instance;
public Singleton getInstance() {
Singleton res = instance;
if (res == null) {
synchronized (this) {
res = instance;
if (res == null) {
res = new Singleton();
instance = res;
}
}
}
return res;
}
}
这几乎是线程安全的正确实现。我看到的唯一问题是:Singleton
初始化字段的那个可以在完全初始化之前发布。现在,第二个线程可以在不一致的状态下读取。thread #1
instance
instance
但是,对于我的眼睛来说,这只是这里的问题。这里只有问题吗?(我们可以使不稳定)。instance