java中 long和double类型的赋值是原子性吗?

以上问题,在百度中搜答案的时候,竟发现大家语调一致地认为: long和double类型的赋值不是原子性的。

but,其实不是这样的。

那你有想过吗,为什么同样是基本数据类型,byte ,int short它们的赋值就是原子性的呢?

讲到根本,原来啊,是和你的操作系统是有关的,32位操作系统每次读取最长的是4个字节,32bit,所以,在32位操作系统上,超过32bit的数据是需要分俩次读取的。

那么,在读取long,double类型数据时,有可能在读取第一次时,别的线程对其进行修改,所以才会出现非原子性的操作 。

在java中,除单纯的引用类型和非long,double的基本类型变量的赋值才是是原子性的。

实例可参考 32位JVM对long类型的赋值不是原子性操作

End!

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值