假设我有一个 Java ArrayList
,它显然不能是一个volatile
变量(volatile
在某种意义上:它的所有内部变量都是volatile
),并且想在第二个线程中查看它的最新状态,因为我可以确定第二个线程是在第一个线程结束(可能已修改ArrayList
实例的第一个线程)。
使用内存屏障应该很容易。但是我怎样才能构造这样一个影响ArrayList
实例的所有内部成员变量/状态的内存屏障呢?我知道同步是一种选择,但我不知道我应该在哪个对象上同步才能达到预期的效果。
有没有关于这个问题的官方参考,定义一个最佳实践?
在我看来,实现内存屏障最直接的方法是调用类似fullFence()
. 但似乎这不是推荐的方式;-)