多线程 基本类型的原子性问题

在java的语言规格中,一开始就定义了一些原子的操作,如,char ,int 这些的赋值与引用是原子的,

例如,两个线程同时对int类型的字段n进行赋值,一个使n=123 ,一个线程使n=345.

那么最后n的值不是123就是345,而不用担心模式会混合在一起。

但long与double的指定,引用操作并不是不可分割的

如对于long类型的a 赋值 ,两个线程分别使其a = 1234L ,a = 5678L

结果可能为,1234L,也可能为5678L,也可能为12345678L,也可能0L,等其他的方式。

解决方法,

1、加synchronized内操作。

2、在前面加上volatile关键字,则这些字段的操作就会成为不可分割的了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值