1.AQS, AbstractQueuedSynchronizer,是阻塞式锁和相关同步器工具的框架。
2.阻塞式的锁就类似于Synchronized锁。
3.用state属性表示资源的状态:独占模式,共享模式。子类需要定义如何维护这个状态,控制如何获取锁和释放锁。
4.独占模式:只有一个线程能访问这个资源。使用Synchronized锁就是独占模式。
5.共享模式:允许有多个线程访问资源。线程数量上限。
getState-获取state的状态
setState-设置state的状态
compareAndSetState-乐观锁机制设置state状态
6.提供了基于FIFO的等待队列,类似于Monitor的EntryList。
7.条件变量来实现等待,唤醒机制,支持多个条件变量,类似于Monitor的WaitSet。
子类主要实现这样一些方法:
tryAcquire 获取锁
tryRelease 释放锁
tryAcquireShared
tryReleaseShared
isHeldExclusively