AQS简介

AQS全称,AbstractQueuedSynchronizer,译为抽象队列同步器。主要用于辅助各种同步工具的实现,如ReentrantLock、ReadWriteLock、Semaphore、CountDownLatch等等,它简化了这些同步工具的实现,屏蔽了各种同步需要考虑的情况,提供了基本的公共方法供实现者调用,并且采用模板方法模式供各类同步工具实现自定义的状态操作,从而衍生出Lock、Semaphore、CountDownLatch各式各样的同步工具以适用各种各样的场景。
通俗的讲就是个同步队列,用于辅助实现同步工具。
diagram.png
image.png
image.png
image.png

为什么要使用AQS

1、AQS使用更加灵活,可以认为控制加锁和释放锁。
2、AQS性能高,在JDK6以前基本上比synchronized表现更好。
3、可以响应中断
4、可以设定超时获取
5、可以自定义实现各种同步器