【发布时间】:2016-05-05 17:07:09
【问题描述】:
假设我有一个 Java ArrayList,它显然不能是一个 volatile 变量(volatile 的意义是:它的所有内部变量都是 volatile),并且想在一个第二个线程,因为我可以确定第二个线程是在第一个线程结束之后执行的(第一个线程可能已经修改了ArrayList 实例)。
使用Memory Barrier 这应该很容易。但是我怎样才能构造这样一个影响ArrayList 实例的所有内部成员变量/状态的内存屏障呢?我知道同步是一种选择,但我不知道我应该在哪个对象上同步才能达到预期的效果。
有没有关于这个问题的官方参考,定义了最佳实践?
在我看来,实现内存屏障的最直接方法是调用 fullFence()。但似乎这不是推荐的方式;-)
【问题讨论】:
标签: java multithreading concurrency memory-barriers memory-fences