CAS的理解和应用

CAS

1、什么是CAS?

**CAS的全称:**Compare-And-Swap(比较并交换)。比较变量的现在值与之前的值是否一致,若一致则替换,否则不替换。

**CAS的作用:**原子性更新变量值,保证线程安全。

**CAS指令:**需要有三个操作数,变量的当前值(V),旧的预期值(A),准备设置的新值(B)。

**CAS指令执行条件:**当且仅当V=A时,处理器才会设置V=B,否则不执行更新。

**CAS的返回指:**V的之前值。

**CAS处理过程:**原子操作,执行期间不会被其他线程中断,线程安全。

**CAS并发原语:**体现在Java语言中sun.misc.Unsafe类的各个方法。调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令,这是一种完全依赖于硬件的功能,通过它实现了原子操作。由于CAS是一种系统原语,原语属于操作系统用于范畴,是由若干条指令组成,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执行过程中不允许被中断,所以CAS是一条CPU的原子指令,不会造成所谓的数据不一致的问题,所以CAS是线程安全的。

2、CAS有什么问题?

线程可能会出现循环多次的问题,因为其他线程可能将主内存的值又改了,但是某个线程拿到的还是老的数据,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值