为什么在双重检查锁定中使用易失性
2022-08-31 12:03:05
从 Head First 设计模式手册中,具有双重检查锁定的单例模式已实现如下:
public class Singleton {
private volatile static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
我不明白为什么被使用。使用方法是否违背了使用双重检查锁定(即性能)的目的?volatile
volatile