业务题第11天

i++有没有线程安全问题? 为什么? 如何解决它 

增操作在多线程环境下可能存在线程安全问题。在高并发情况下,再循环中使用i++时往往会出现些问题,这是由于i++不具备原子性(读取i的值,加1,再写会主存,是三步操作)。为了避免这类问题,我们有三种处理方式:

1.在方法块上加入synchronized关键字,保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,但是如果在读取较多而写入较少时程序效率低下。

2.使用一种“程度较轻的synchronized”,即在变量上加volatile修饰,然而volatile不好把控,使用volatile的代码往往比使用锁的代码更加容易出错。

3.使用autiolnteger,它内部使用了 CAS(Compare-and-Swap)操作来实现原子性,比使用 synchronized关键字更高效。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值