并发源码_ReentrantLock解锁源码分析
2023-04-04 09:20:49 0 举报
ReentrantLock解锁源码分析
作者其他创作
大纲/内容
release(1)
尝试去释放锁unlock
取当前线程的后继节点 Node s = node.next
返回TURE
解除后继节点线程的阻塞
c == 0
计算新的stateint c = getState() - releasessetState(c)
Node h = headh != null && h.waitStatus != 0
撤销CLH队列中的一个Node对应线程的阻塞unparkSuccessor(head)
不为空
为空
不是返回FLASE
释放独占模式持有的锁tryRelease(arg)
设置持有sync对象为nullsetExclusiveOwnerThread(null)
从tail尾节点向前便利找最前面的waitStatus小于等于0的节点(等于0是针对队列Node为tail的情况)
0 条评论
下一页