CountDownLatch
2021-03-25 19:00:33 3 举报
CountDownLatch是Java并发编程中的一个同步辅助类,它允许一个或多个线程等待其他线程完成操作。这个类的主要方法是countDown()和await()。countDown()方法用于减少锁存器的计数,而await()方法用于阻塞当前线程,直到锁存器的计数为0。当所有等待的线程都收到通知后,它们将继续执行。CountDownLatch通常用于确保某个线程在其他线程完成其任务之前不会继续执行。这个类在多线程编程中非常有用,特别是在需要协调多个线程之间的操作顺序时。
作者其他创作
大纲/内容
是
doAcquireSharedInterruptibly
否
countDown
唤醒后继节点
结束
表示要唤醒后继节点
判断这个节点的前继节点是否是头节点
head.waitStatus==-1
通过CAS将state-1释放锁
CAS清除head状态
表示后继节点在等待唤醒
state==0(计数器是否为0)
队列中至少有两个节点
开始进入阻塞逻辑
将自己设为头节点
执行doReleaseShared方法继续唤醒后继节点
判断head是不是之前的那个
doReleaseShared
阻塞当前线程,等待唤醒
判断后继节点是否为null或是共享节点
生成一个节点插入到队尾
线程是否是中断状态
体现出由唤醒者接着唤醒后面的节点
判断state==0
开始去唤醒阻塞线程
await
state==0(再判断计数器是否为0
设置前驱节点status=-1(表示这个节点的后继节点在阻塞)
线程被唤醒后的逻辑
一段时间后被唤醒
0 条评论
下一页