我遇到了一个单例类{延迟初始化}。代码如下
// Singleton reference for this class
private static volatile FileProperties INSTANCE = null;
public static FileProperties getInstance() {
if (INSTANCE == null) {
synchronized (FileProperties.class) {
if (INSTANCE == null) {
INSTANCE = new FileProperties();
}
}
}
return INSTANCE;
}
我的问题是通过将实例设置为易失性我们得到了什么好处, 因为我们已经通过同步处理了线程安全。在这种情况下 volatile 有什么好处吗?