アトミック アクセスに関する Oracle のドキュメント ( http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html ) には、次のように書かれています。
「揮発性変数は事前発生関係を確立します....これは、スレッドが揮発性変数を読み取るときに、揮発性変数への最新の変更だけでなく、原因となったコードの副作用も確認することを意味します変化。"
私はそれについて頭を包むのに苦労しています。揮発性変数がどのように機能するかは理解していますが (>= Java 5)、Java が揮発性変数の変更に「つながった」副作用をどのように決定するのか疑問に思っています。
だから私の質問は次のとおりだと思います:この保証にはどのような副作用がありますか?
編集:
したがって、スレッド A が揮発性変数を変更し、次にスレッド B がそれを読み取る場合、揮発性変数への書き込みの前に発生したスレッド A からのすべての書き込みは、スレッド B に関して「一貫性が保たれる」ことを学びました (つまり、キャッシュされた値スレッド A による前述の書き込みの対象となる変数の数は、スレッド B で無効化されます)。私が間違っている場合は修正してください。