Java メモリ モデルを理解するための助けが必要です。以下は、基本的な概念を理解するための一般的な例です。
Image というオブジェクト インスタンスとShared
、2 つのスレッドA
とがありB
ます。さらにQueue
、同期put
とtake
.
スレッドは、メソッドの前およびメソッド内で-instanceA
を変更します。Shared
put
質問 1:からのすべての変更は、同期メソッドを介してオブジェクト インスタンスを取得するA
ときに表示されますか?B
Shared
take
質問 2: メモリ キャッシュは、同期メソッドShared
を終了するとすぐにフラッシュされます (すべての変更が表示されます) 。が-method で によって呼び出された場合、正確にはどうなりますか? -methodをまだ終了していなくても、変更が行われたことがわかりますか? 呼び出し時にキャッシュもフラッシュされますか?A
put
wait()
put
A
B
Shared
A
synchronized
wait()