最赞回答 / 鬼羽子
32bit数据的读写是一个原子操作,对64bit数据加volatile仅仅只是保证数据的读写具有不可重入性以及可见性——这样就够了。第一个32bit读完之后,才允许读第二个32bit,且必须从主线程内存中刷新,这样可以保证数据的有效性。
2015-05-17
最赞回答 / meetyu
volatile本身不保证获取和设置操作的原子性,仅仅保持修改的可见性。但是java的内存模型保证声明为volatile的long和double变量的get和set操作是原子的
2015-05-06
最赞回答 / 慕婉清3525975
可参考 http://blog.csdn.net/xiaolinzi007/article/details/44487851 具体为什么idea返回2,是因为多了个monitor ctrlbreak线程。
2015-04-01