一、简介
AbstractQueuedSynchronizer(简称AQS)是JAVA中一套实现锁机制的底层框架,Java中著名的JUC包的核心就是AQS框架。
AQS框架内部维护一个FIFO类型的Node队列来控制多线程的竞争排队顺序,使用一个int类型的state变量来定义当前共享资源占用的状态,定义了若干同步状态获取和释放的方法来供开发者使用,开发者只需要继承AbstractQueuedSynchronizer类,然后实现其中的指定模板方法,就可以快速实现一套线程同步控制组件。
AQS框架还定义了condition结构来提供线程的wait/signal(等待和唤醒)机制,同时根据资源互斥级别提供了独占锁/共享锁两种锁控制方式。