AQS独占式获取锁流程
2021-04-14 19:58:00 10 举报
AQS独占式获取锁流程
作者其他创作
大纲/内容
开始
是
调用tryAcquire尝试获取锁
获取成功
自旋操作
否
获取失败
设置当前节点为头结点head
不为空
更改state状态并退出
清除取消状态的节点
执行完整的添加节点的enq方法(自旋操作)
acquireQueued
设置当前节点状态为SIGNAL
ws=SIGNAL
将当前线程包装成一个节点
addWaiter
判断前置节点状态
返回当前节点并执行acquireQueued
结束
CAS操作当前节点成为新的tail
添加当前节点到尾部
为空
判断当前节点的前置节点是否为头结点head
ws0
判断tail是否为空
当前线程执行挂起操作
如果添加失败
0 条评论
下一页