ReentrantLock加锁序列图
2020-03-22 23:58:13 0 举报
ReentrantLock加锁序列图
作者其他创作
大纲/内容
h!=ttrue
队列当中的元素等于1
如果当前没有初始化等待队列
队列当中的元素大于1
false
入队操作
根据线程实例化一个node
自选第二次,能不能拿到锁
t1
可以抢到锁
里面包含当前线程的信息
CAS加锁
true
setHead(node);
队列是否初始化
s==nullfalse
实例化一个新的node
获得锁,CAS加锁
h != t返回falseh 和 t =null
acquireQueued
判断锁的状态是否被占用
unlock
释放锁
自选一次,能不能拿到锁
判断自己是否需要排队
调用enq
不需要排队
park
s.thread != Thread.currentThread()false
队列被初始化了
入队
当排队的队尾拿到锁的时候
调用addWaiter
0 条评论
下一页