同期ブロック内のコードが「happensbefore」セマンティクスに準拠していることを読みました。これにより、同期ブロック内に書き込まれたすべての値が他のスレッドに連続して表示されるようになります。さらに、キャッシュは同期ブロックの終了時にのみフラッシュされることを読みました。同期されたブロックの終了でキャッシュのみがフラッシュされる場合、以下で説明するシナリオでは、上記の「発生前」のセマンティクスはどのように適用されますか?
スレッドAはオブジェクトCへの参照を持ち、Cで同期された同期コードのCのフィールドを変更します。スレッドBもオブジェクトCへの参照を取得しました。これで、同期コードが終了する前にスレッドAが一時停止されます。スレッドBはアクションにジャンプし、Cで同期せずに、コード内のオブジェクトCのフィールドにアクセスします。
これで、スレッドBはスレッドAによって行われた変更を確認できることが保証されますか?