2.JVM虚拟机 - long和double的非原子性

 java内存模型要求lock、unlock、read、load、assign、use、store、write这8个操作都具有原子性,但是对于64位的数据类型(long和double),在模型中特别定义了一条先对宽松的规定:允许虚拟机将没有被volatile修饰的64位数据的读写操作划分为2次32位的操作来执行,即允许虚拟机实现选择可以不保证64位数据类型的read、store、load和write这4个操作的原子性。这就是所谓的long和double的非原子性协定(Nonatomic Treatment of double and long Variables)

                                                                                                                                             --《深入理解JVM虚拟机第二版》

首先:以上针对于32位虚拟机来讲的,64位JVM虚拟机不用考虑了,不存在这种情况;

其次:针对商业虚拟机来讲,基本都把long和double的操作实现为原子性操作;

以上,不必担心。(虽然虚拟机规定volatile修饰的long和double具有原子性),完全没有必要添加。

 

请关注公众号,获取更多内容

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值