Java并发CAS基本功能

CAS简介

CAS全称CompareAndSet,比较并交换,有一个预期值,和一个最终修改值,如果预期值和当前值不相等则修改失败,否则修改成功.

CAS特点

CAS是一个共享锁丶乐观锁,而synchronized是排它锁互斥锁
CAS是轻量级的锁.

CAS缺点

  1. 并发量高时资源开销大
    多个线程在修改值时,只有一个线程能成功修改,其它线程就会进入死循环,也就是自旋空转占用CPU资源
  2. 使用场景局限性
    一次只能修改单个值,保证单个值是线程安全的,而synchronized是可以一段程序保证线程安全.

CAS案例

public class CompareAndSetDemo {
    static AtomicInteger atomicInteger = new AtomicInteger(6);

    public static void main(String[] args) {
        boolean b = atomicInteger.compareAndSet(6, 2020);
        System.out.println(b+",比较并交换:"+atomicInteger.get());

         b = atomicInteger.compareAndSet(6, 1024);
        System.out.println(b+",比较并交换:"+atomicInteger.get());
    }
}

在这里插入图片描述
程序输出如图上,第一次期望值6,修改值2020,比较并交换成功,值改为2020
第二次期望值6,修改值1024,比较并交换失败,值还是2020,期望值和原值不匹配修改不成功

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值