私は、1つの変数について起こった関係を理解していると思います。揮発性フィールドを書き込むと、このフィールドの後続のすべての読み取りにこの新しい値が格納されます。 volatile
を書き込むと、メモリバリアを越えてメインメモリに新しい値がフラッシュされます。Javaメモリモデル - メモリの境界を超えてメモリにフラッシュされるのは何ですか?
他のすべてのケースで何が起こるかはまだわかりません。例えば、Thread.start()
、、または新しいロックjava.util.concurrent
です。彼らはまた、記憶の壁を越えているということは何を意味していますか?ローカルキャッシュからメインメモリにフラッシュされるデータは何ですか?言い換えれば、はどのような交差点の範囲です?
は常にフラッシュすべてのですか?今すぐ戻ってvolatile
に、それは1つだけvolatile
フィールドよりも多くをフラッシュしていますか?
良い点を同期します。私は言語を変えた。 –
また、あなたはそれが中央メモリに汚れているすべてのキャッシュされたストレージを削除することを言及する必要があります。ごめんなさい。これは良い質問です。 – Gray
@Grayあなたは、メインメモリに手の込んだ(またはリンクを提供)汚れたキャッシュされたストレージにしてくださいだろうか?それは何ですか? –