多线程之AQS
多线程之AQS
AQS
AQS - AbstractQueuedSynchronizer, 抽象队列同步器
ReentrantLock、ReentrantReadWriteLock底层都是基于AQS来实现的
ReentrantLock与AQS
线程1加锁,如果没有别的线程占有锁,CAS将state由0 变成1 , 并吧当前加锁线程设置为自己。

重入: 如果当前线程已经占有锁,state+1, release时, state-1,state为0时认为完全释放锁.
线程2尝试加锁,加锁失败,线程2放入AQS的等待队列。
线程1,释放锁,从等待队列的队头唤醒排队线程,线程2重新尝试加锁。
AQS就是一个并发包的基础组件,用来实现各种锁,各种同步组件的。它包含了state变量、加锁线程、等待队列等并发中的核心组件
summary
QS作为并发编程的框架,为很多其他同步工具提供了良好的解决方案。

3.3 自定义同步工具
相关 Post not found: 线程之ReentrantLock 线程之ReentrantLock
https://mp.weixin.qq.com/s/atULuqIqhMcctG6xD3LgSA