aqs-ReentrantLock解析
2021-03-02 09:32:05 0 举报
aqs-ReentrantLock解析
作者其他创作
大纲/内容
准备把当前线程添加到队列中
不是
再次尝试获取锁
是0说明当前无锁
获取锁设置exclusiveOwnerThread为当前线程
设置statue加一继续执行当前线程
不成功
成功
是
获取锁
把当前线程设置为tail节点addWaiter(Node.EXCLUSIVE)
不是0说明当前有锁
判断statue是否是0
设置节点状态状态设置成功,阻塞当前线程状态设置不成功,
CANCELLED = 1SIGNAL = -1 等待被唤醒CONDITION = -2 条件队列PROPAGATE = -3
statue状态从0设置为1
在添加队列之前判断!tryAcquire(arg)
收藏
0 条评论
下一页