1. 背景:锁的目标是 让不平安的多线程操作变得平安.计划就是一个一个的来.锁的概念是 让内部(线程)进不去,只能有钥匙的线程能够进去. 那就还须要有一个 管理者,这个管理者 须要确定哪个线程先进去,以及当先进去的人进去后,从排队的线程外面选一个再进去. 这个管理者,被独自定义成AQS, AQS是多线程竞争资源的管理者,从名称翻译的话,是协调器.
  2. 利用场景:如果要自定义锁,个别做法是在这个锁的类外面,定义继承AQS的实现类,依据自定义锁的逻辑,实现独占锁和共享锁的相干办法即可.例如Reentrantock就是这么做的
  3. 根本逻辑:抽象类AbstractQueuedSynchronizer里有一个int类型的状态字段state,应用这个字段来定义以后锁的状态,比方0示意还没有线程获取到锁,1示意有一个线程获取到锁,大于1示意是共享锁,且以后领有该共享锁的线程数是state