Java并发 CAS AQS

本文详细介绍了Java并发中的CAS(CompareAndSwap)机制,包括其工作原理、锁前缀、ABA问题及其解决方案。同时,深入探讨了AQS(AbstractQueuedSynchronizer)在同步器框架中的作用,以及在Java并发包中的应用。通过对处理器原子指令、volatile变量特性和同步队列的理解,阐述了如何实现线程间的通信和同步。
摘要由CSDN通过智能技术生成

前言:

     摒弃segment利用CAS算法,底层依然对数组+链表+红黑树 不离不弃,为了并发、添加了些对象内部类

CAS:CompareAndSwap

乐观锁的宝贝甜蜜饯

比较并替换,3个操作数:内存地址V 、旧的预期值A 、要更新的目标值B:当且仅当V==A才V=B

CPU硬件指令保证:JNI(Java Native Interface)调用native方法(c++硬件级指令)jdk提供unsafe类执行

Unsafe类是CAS实现的核心,封装了一些类似于C++中指针的东西,类中的方法都是native、原子

compareAndSwapInt、Atomic::cmpxchg、lock前缀 :CAS"自旋"

 Java并发包原子操作类(Atomic开头)AtomicInteger借助C来调用CPU底层指令

 

lock前缀

单处理器没有必要加lock前缀,多核情况下添加lock

1、确保对内存读-改-写原子执行,锁定单个缓存行中的内存区域:缓存锁定ÿ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值