AQS,AbstractQueuedSynchronizer,抽象队列同步器。ReentractLock、ReadWriteReentractLock,锁API底层都是基于AQS来实现的。
    加锁过程:
    线程1加锁,改变state的数值,将线程标记位改为当前线程。当线程2过来了,由于state不是0了,就要把这个线程2加入到这个队列中去
    image.png
    释放锁过程:
    线程1,修改state变量,清除线程标记位,随后从队列中唤醒其他等待中的线程。到此释放锁过程就完成了,随后别的线程继续按照加锁的流程继续加锁
    image.png