ReentrantLock unlock()流程
2021-03-16 10:41:03 5 举报
Java ReentrantLock unlock()流程
作者其他创作
大纲/内容
如果head节点不为null(判断是否有下一个节点),并且状态不是0,则进入unparkSuccessor(h)方法
tryRelease(arg)
获取head节点的waitStatus,如果小于0,则CAS修改为0,然后获取head节点的下一个节点s,如果下一个节点s不为null,并且waitStatus<=0,则LockSupport.unpark(thread)唤醒s节点
false
unlock()
release(arg)
true
unparkSuccessor(h)方法
free是否为true
获取共享状态state,将state-arg,如果共享状态state为0,则将占有线程设置为null,并返回释放状态free为true
0 条评论
下一页