我已经阅读了同步块内的代码符合“发生在之前”语义,因此写入同步块内的所有值都应该对其他线程连续可见。此外,我读过缓存仅在同步块终止时刷新。如果仅使用同步块终止刷新缓存,则在下面描述的场景中如何强制执行上述“发生在之前”的语义?
线程 A 引用了对象 C,并在 C 上同步的同步代码中更改了 C 的一个字段。线程 B 也获得了对象 C 的引用。现在线程 A 在同步代码完成之前被挂起。线程 B 开始行动并在代码中访问对象 C 的字段,而 C 上没有同步。
现在是否保证线程 B 可以看到线程 A 所做的更改?