AQS极简表述

  1. AbstractQueuedSynchronizer又称抽象队列同步器,简称AQS,它是用来构建锁或其他同步组件的基础框架,
  2. ReentrantLock内部就包含了一个AQS对象抽象类的实现类
  3. AQS内部有个int类型的变量state,加锁就是将state值通过cas操作从0变为1,并标记加锁线程为自己, 以通过判断当前获得锁的线程是否是自己,如果是对state进行累加,这就是可重入锁的实现原理,
  4. 如果其它线程获取锁时发现state的值是1,获取锁失败,会加入aqs的同步队列
    释放锁就是将state变量的值减1,如果state值为0,则彻底释放锁,会将“加锁线程”变量也设置为null

同步等待队列,条件变量等待队列都是由内部类Node构成的,
同步等待队列,完成线程获取锁的排队工作
条件变量等待队列保存那些由Condition.await()引起阻塞的线程。

猜你喜欢

转载自blog.csdn.net/pkhrig/article/details/120936138
AQS