B站视频地址
AQS核心:
- CAS
- state
- 队列(存放失败的)


ReentranLock实现

互斥锁



总结
AQS通过维护一个资源状态和一个先进先出的CLH队列实现。(CLH队列:虚拟的双向队列即不存在队列实例,仅存在结点之间的关联关系)。
就拿Reentranlock来说,先看state状态是不是0,是0证明没人加锁,自己就cas操作改为1,因为reentranlock是可重入的,他再次来加锁的时候,看见state不是0,就在看是不是自己得到的锁,是的话state变为2。若果要释放,state就减一。如果在state不为0的过程中有别的线程来抢占,失败就放到等待的CLH队列。