最赞回答 / 鬼羽子
32bit数据的读写是一个原子操作,对64bit数据加volatile仅仅只是保证数据的读写具有不可重入性以及可见性——这样就够了。第一个32bit读完之后,才允许读第二个32bit,且必须从主线程内存中刷新,这样可以保证数据的有效性。
2015-05-17
已采纳回答 / passionfoure
这里面有两个VOLATILE变量,它包含了一个不变式就是LOW<UP( if (value > upper) 和 if (value < low) )public class A { private volatile int low=0; private volatile int up=100; public int getLow() { return low; } public int getUp() { return up; } public void ...
2015-05-16
最赞回答 / meetyu
volatile本身不保证获取和设置操作的原子性,仅仅保持修改的可见性。但是java的内存模型保证声明为volatile的long和double变量的get和set操作是原子的
2015-05-06