Javaオブジェクトを揮発性として宣言しないでください。結果として、参照のみが揮発性になるためです。以下にいくつかの例を示します。
ソナーが示唆していることは、「非プリミティブフィールドは「揮発性」であってはならない」ということですが、説明されている問題は可変オブジェクトに言及していることも示唆しています。そうではない。
私の質問は、Java Stringを揮発性として宣言しても安全ですか?
Java Stringは最終的なクラスであり、不変でスレッドセーフです。
文字列の中間状態はなく、マルチスレッドの場合にlock
またはsynchronize
と混同されません。それをする必要はありません。