JUC-CAS机制

CAS(比较并交换)是Java并发编程中的一种机制,主要用于实现乐观锁。CAS操作包含内存位置、预期值和新值,只有当预期值与内存位置的值相同时,才会更新为新值。CAS依赖于硬件层面的原子指令,如Intel平台的cmpxchg。它在JUC包中广泛应用于AQS同步组件和Atomic原子类。虽然CAS能避免锁带来的开销,但在高并发下可能会导致循环(自旋)较多,增加CPU负载,并存在ABA问题。相对于synchronized,CAS在资源竞争不激烈时能提供更好的性能,但在竞争严重时,synchronized的性能更优。
摘要由CSDN通过智能技术生成

CAS(比较并交换)

CAS 全称是 compare and swap,是一种用于在多线程环境下实现同步功能的机制。CAS 操作包含三个操作数 – 内存位置、预期数值和新值。CAS 的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为新值。若不相等,则不做任何操作.
是CPU硬件级别提供的功能。java.util.concurrent包中使用该技术实现乐观锁,换句话说java.util.concurrent包是完全建立在CAS之上,AQS同步组件、Atomic原子类操作等都是基于CAS实现的。CAS在JUC包中所处的位置如图:

在这里插入图片描述

CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。

在这里插入图片描述

java中具体的CAS操作是由类sun.misc.Unsafe来负责的。Unsafe类提供了硬件级别的原子操作(即native方法),Java使用native方法来间接访问操作系统底层(

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值