ReentrantLock之lock加锁过程
2021-03-12 10:58:58 0 举报
ReentrantLock之lock加锁过程
作者其他创作
大纲/内容
true
执行park逻辑
FairSync#lock()
非公平锁
addWaiter
false
abstract voidlock()
acquire(1)
CAS获取锁
成功获取到锁,设置锁持有线程为当前线程,返回。
public void lock(){ sync.lock()}
执行排队逻辑
返回false,表示线程没有获取到锁.
NonFairSync#lock()
lock
acquireQueued返回,表示线程获取到锁,线程逐级返回,加锁过程结束。
acquireQueued
返回true,表示获取到了锁,线程逐级返回,加锁过程结束。
公平锁
sync继承了AbstractQueuedSynchronized
sync.lock()
final void lock() { acquire(1);}
tryAcquire
尝试获取锁,如果获取不到,排队(阻塞当前线程)
ReentrantLock
0 条评论
下一页