为什么使用易失性与同步块?
2022-08-31 20:00:33
我在java中看到了一些例子,他们在代码块上进行同步以更改某些变量,而该变量最初被声明为易失性。我在单例类的一个例子中看到了这一点,他们声明唯一实例为易失性,并且他们对初始化该实例的块进行了同步...我的问题是,为什么我们在同步时声明它是易失性的,为什么我们需要同时做这两件事??难道其中一个对另一个来说还不够吗?
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;
}
}
提前致谢。