変数が元々揮発性であると宣言されている間に、コードのブロックで同期を行って変数を変更するJavaの例をいくつか見ました。一意のインスタンスを揮発性として宣言し、ブロックを同期したシングルトンクラスの例で見ました。それはそのインスタンスを初期化します...私の質問は、同期中にそれを揮発性と宣言する理由、なぜ両方を行う必要があるのかということです。それらの1つは他のために十分ではありませんか?
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;
}
}
前もって感謝します。