ReentantLock
2021-09-29 17:24:29 40 举报
ReentantLock加锁流程
作者其他创作
大纲/内容
CAS再次尝试获取锁
将当前线程插入到队列尾部并返回
enq
acquireQueued
Node
shouldParkAfterFailedAcquire
CAS直到前驱节点状态为SIGNAL
结束
是
否
初始化队列CAS自旋把当前线程添加到尾部
setHead
acquire
判断当前节点的前驱节点状态是否为SIGNAL
tryAcquire
开始加锁
阻塞当前线程等待下次被唤醒
等待下次被前驱节点的线程唤醒
获取到锁
parkAndCheckInterrupt
addWaiter
CAS获取锁
判断当前节点是否为头结点且成功获取到锁
将当前结点设置为队列头结点
收藏
收藏
0 条评论
下一页
为你推荐
查看更多
抱歉,暂无相关内容