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()引起阻塞的线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值