1.AQS原理
1.1.概述
1>.AQS全称是 AbstractQueuedSynchronizer,是阻塞式锁
和相关的同步器工具
的框架;
2>.特点:
①.用state属性来表示资源的状态(分独占模式和共享模式),子类需要定义如何维护这个状态,控制如何获取锁和释放锁;
- getState: 获取state状态;
- setStata: 设置state状态;
- compareAndSetState: cas机制设置state状态;
- 独占模式是只有一个线程能够访问资源,而共享模式可以允许多个线程访问资源;
②.提供了基于FIFO(先进先出)的等待队列,类似于Monitor的 EntryList;
③.条件变量来实现等待、唤醒机制,支持多个条件变量,(具体的某个条件变量)类似于Monitor的WaitSet;
3>.子类主要实现这样一些方法(默认抛出UnsupportedOperationException):
tryAcquire
tryRelease
tryAcquireShared
tryReleaseShared
isHeldExclusively
4>.获取锁的姿势