以下问题:
volatile Object A;
volatile Object B;
volatile Object C;
Thread1:
reads and writes to A-C
Thread2:
the same as Thread1
所以我的问题是:如果我这样做会更好吗:
Object A;
Object B;
Object C;
volatile boolean memoryBarrier=true;
Thread1:
Before read of A-C: read memoryBarrier
After some write of A-C: write memoryBarrier=true;
Thread2:
the same as Thread1:
Before read of A-C: read memoryBarrier
After some write of A-C: write memoryBarrier=true;
只有一个 volatile 变量更好,还是我应该让我可以在 valatile 上写/读的每个变量?
这样可以吗,如果我每次都在我的第二个解决方案中写入我的 memoryBarrier?,以触发写入 - 读取 - 在 java 中的关系语义之前发生?我猜它没有被优化掉?
所以总结:我的解决方案 1 和 2 在语义上是否相等?解决方案2更好吗?我是否可以始终将相同的值写入 volatile 变量以获得读/写 volatile happensbefore-relationship?
aluckdog
相关分类