Unsafe类 + CAS思想

Unsafe : 在虚拟机启动类目录下 rt.jar 下的 sum.misc.Unsafe  通过内存偏移量获取到内存的变量值

CAS :通过Unsafe获取到值与当前类的值进行比较,如果相同,数据进行更新,如果不同数据更新失败,重复上述动作,继续获取内存偏移量数据进行比对,直至比对成功。

CAS缺点::

        1.在极端条件下会出现CPU利用率飙升的情况。

        2.无法保证对多变量进行原子性操作(只能保证单个共享变量),此时建议用Synchronized

        3.ABA问题,当两个线程同时访问共享变量,但A线程执行时间过长,B线程执行时间短但多次执行,且在执行过程中数据发生了多次改变最后变为最初值,此时如果业务只关心开始和结果,此问题造成影响不大,如果在执行中需要监控过程中的数据变换,那么就会造成结果与预期不一致。(解决方案:增加数据版本控制  AtomicStampedReference )

    

 

CAS工作原理:

 

 

CAS具体应用代码:

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值