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队列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值