我在 java 中看到了一些示例,它们在代码块上进行同步以更改某些变量,而该变量最初被声明为 volatile .. 我在单例类的示例中看到了,他们将唯一实例声明为 volatile 并同步了该块初始化那个实例......我的问题是为什么我们在同步它时声明它是易失的,为什么我们需要同时做这两个?是不是其中一个对另一个就足够了?
public class SomeClass {
volatile static Object uniqueInstance = null;
public static Object getInstance() {
if (uniqueInstance == null) {
synchronized (someClass.class) {
if (uniqueInstance == null) {
uniqueInstance = new SomeClass();
}
}
}
return uniqueInstance;
}
}
提前致谢。