我需要一些帮助来理解 Java 内存模型。以下是掌握基本概念的通用示例:
图片我有一个名为的对象实例Shared
和两个线程A
和B
. 此外,还有某种Queue
带有同步put
和take
.
线程在方法之前和方法中A
修改Shared
-instance 。put
问题1:通过同步方法获取-object实例时,所有的变化A
都是可见的吗?B
Shared
take
Shared
问题2:一旦A
离开同步方法,内存缓存就会被刷新(所有更改都是可见的) put
。如果在- 方法wait()
中被调用,会发生什么?即使尚未退出- 方法,也会看到所做的更改?调用时缓存是否也被刷新?put
A
B
Shared
A
synchronized
wait()