队列同步器AbstractQueuedSynchronizer,是用来构建锁或者其他同步组件的基础框架,它使用一个int成员表示同步状态,通过内部的FIFO队列来完成资源获取线程的排序工作。
一、AQS的设计
AQS的设计是基于模板方法模式的,也就是说,使用者需要继承AQS并重写指定的方法,随后将AQS组合在自定义同步组件的实现中,并调用AQS提供的模板方法,而这些模板方法将会调用使用者重写的方法。
private volatile int state;
AQS使用一个int的成员变量来表示同步状态。
protected final void setState(int newState) { state = newState; }
setState方法用来设置同步状态
protected final int getState() { return state; }
getState方法用来获取同步状态