一个抽象类,并发编程最重要的类之一。ReentrantLock、栅栏CountDownLatch、信号量Semaphore等都是基于AQS。
核心属性:
1.state
volatile修饰、能被所有线程可见
通过CAS完成对state
值的修改
为0时代表线程可以竞争锁,不为0时代表当前对象锁已经被占有
实现类去定义具体语意
2.Node
内部类
thread封装线程,
waitStatus 当前或者后继节点的状态,
nextWaiter 当node再CLH队列时,nextWaiter表示共享式或独占式标记。。在条件队列时,nextWaiter表示下个Node节点指针
3.CLH队列
存放node的双端双向队列,用来排队拿锁
4.Condition 队列
存放node的双端单向链表
对标Synchroniz的wait方法,条件队列,满足条件才能唤醒。