この件に関していくつか質問がありますが、質問の意図ではないため、ほとんどはこの問題を回避します。
クラスに static volatile がある場合:
private static volatile MyObj obj = null;
そして、以下の方法で私は:
public MyObj getMyObj() {
if (obj == null) {
obj = new MyObj();// costly initialisation
}
return obj;
}
obj == null
1 つのスレッドだけがフィールドに書き込むように同期する必要がありますか?それとも、条件を評価する他のスレッドが書き込みをすぐに確認できるようにする必要がありますか?
別の言い方をすれば、volatile を使用すると、静的変数への書き込みへのアクセスを同期する必要がなくなりますか?