最赞回答 / 鬼羽子
32bit数据的读写是一个原子操作,对64bit数据加volatile仅仅只是保证数据的读写具有不可重入性以及可见性——这样就够了。第一个32bit读完之后,才允许读第二个32bit,且必须从主线程内存中刷新,这样可以保证数据的有效性。
2015-05-17
最赞回答 / meetyu
volatile本身不保证获取和设置操作的原子性,仅仅保持修改的可见性。但是java的内存模型保证声明为volatile的long和double变量的get和set操作是原子的
2015-05-06
最新回答 / MrToms
volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。
2015-04-13
最赞回答 / 慕婉清3525975
可参考 http://blog.csdn.net/xiaolinzi007/article/details/44487851 具体为什么idea返回2,是因为多了个monitor ctrlbreak线程。
2015-04-01