CAS自旋

CAS(Compare And Swap)比较并转换
该算法涉及三个数:内存值V,旧的预期值A,新的预期值B。当且仅当旧的预期值A和内存值V相同时,将内存值改为B,否则什么也不做。
如何来理解上面这一段话呢?我们先了解一下乐观锁和悲观锁各自的做事方式,首先,悲观锁的态度是一件事情我必须要能百分之百掌控才能去做,否则就认为这件事情一定会出问题,而乐观锁的态度就是不管什么事情,我都会先尝试去做,大不了最后不成功就是了。
基于CAS的自旋就是典型的乐观锁,程序执行时,线程1从共享内存中取值V并建一个副本A,对A进行计算后将新的值保存为B,然后对A值和内存中的V值进行比较,如果A等于V,则认为内存中的V值没有被其他线程修改过,可以将新值B赋给内存,否则,认为内存中已被其他的线程修改,则重新执行计算操作和检测,知道旧的期望值A等于内存值V为止。
java并发包java.util.concurrent.*的核心就是CAS自旋原理。如AtomicInteger、AtomicLong等都是基于CAS实现的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值