unLock
2021-12-14 02:58:40 0 举报
AQS 之重入锁ReentrantLock 解锁流程
作者其他创作
大纲/内容
LockSupport.unpark
否
return false
则从尾节点遍历,找到最前面一个waitStatus <= 0的节点
setExclusiveOwnerThread(null)设置独占线程为null
if(node.waitStatus<0)通过CAS操作 node.waitStatus=0
state==0
如果next节点为null或者为取消状态
state!=0
state=state-1
false
表示加锁多次,return false
h != null && h.waitStatus != 0
s == null || s.waitStatus > 0
当前线程是否为独占线程
throw new IllegalMonitorStateException()
unLock
true
Node s = node.next;
0 条评论
下一页