AQS
AQS是什么?
AQS全称为抽象队列同步器,是用来实现锁或者其它同步器组件的公共基础部分的抽象实现,是重量级基础框架及整个JuC体系的基石,主要用于解决锁分配给”谁”的问题

整体就是一个抽象的FIFO队列来完成资源获取线程的排队工作,并通过一个int类变量表示持有锁的状态

AQS的”产品”
- ReentrantLock
- CountDownLatch
- ReentrantReadWriteLock
- Semaphore
- CyclicBarrier


进一步理解锁和同步器的关系
锁,面向使用者:定义了程序员和锁交互的使用层API,屏蔽了实现细节,调用即可
同步器,面向锁的实现者:Java并发大神DougLee,提出统一规范并简化了锁的实现,将其抽象出来,屏蔽了同步状态管理、同步队列的管理和维护、阻塞线程排队和通知、唤醒机制等,是一切锁和同步组件实现的——–公共基础部分
AQS同步队列基本结构

这个state非常重要!!!0就是空闲,>=1就是已经有人占用
从ReentrantLock打开AQS

AQS
http://example.com/2023/08/11/AQS/