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/
Author
Posted on
August 11, 2023
Licensed under