AQS

B站视频地址

AQS核心:

  1. CAS
  2. state
  3. 队列(存放失败的)
    在这里插入图片描述
    在这里插入图片描述

ReentranLock实现

在这里插入图片描述

互斥锁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

AQS通过维护一个资源状态和一个先进先出的CLH队列实现。(CLH队列:虚拟的双向队列即不存在队列实例,仅存在结点之间的关联关系)。
就拿Reentranlock来说,先看state状态是不是0,是0证明没人加锁,自己就cas操作改为1,因为reentranlock是可重入的,他再次来加锁的时候,看见state不是0,就在看是不是自己得到的锁,是的话state变为2。若果要释放,state就减一。如果在state不为0的过程中有别的线程来抢占,失败就放到等待的CLH队列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值