背景介绍
AQS全称为Abstract Queue Synchronizer(抽象队列同步器)。AQS是一个同步器,J.U.C中的并发编程类都是基于AQS的。例如:ReentrantLock,Semaphore等。
重要类及变量分析

根据类图可以看出AbstractQueueSynchronizer类继承了AbstractOwnableSynchronizer类,同时依赖了其内部类Node(用于实现等待队列)
AbstractOwnableSynchronizer
exclusiveOwnerThread:加锁成功的线程对象
AbstractOwnableSynchronizer
state:锁状态,默认为0表示没有上锁,当一个线程加锁成功后会变为1,如果加锁的线程再次进入则会对state继续累加
head:等待队列的头节点
tail:等待队列的尾节点
Node
waitStatus:当前节点的等待状态
prev:后一个节点
next:前一个节点
thread:线程对象。加锁失败的线程对象
nextWaiter:下一个等待中的节点
实现原理

