架构图
image.png

sync-queue和condition-queue是相互独立的,当调用signal方法时,会将等待队列中的线程唤醒,这个唤醒的线程和普通的线程一样去争抢锁,如果没有强到,加入到sync-queue,此时节点就从condition-queue加入到了sync-queue,调用signalAll方法,node也是一个一个转移过去的。
condition-queue中的Node使用了waitStatue、thread、nextWaiter属性,prev和next属性没有使用condition-queue,调用await入队列,进入队列已经获取锁,在队列中释放锁,离开队列需要竞争锁,没有获取到转移到sync-queue
sync-queue,入队时没有锁,在队列中竞争,离开时获取了锁

原理
image.png


一只鱼
49 声望1 粉丝

« 上一篇
ReentrantLock
下一篇 »
CountDownLatch

引用和评论

0 条评论