知识卡片

CountDownLatch一次性计数

普通读书笔记卡 · 1527

内容

CountDownLatch 是”倒数门闩”:构造时指定计数值,线程并发 countDown() 减一,等待方 await() 阻塞直到归零才被唤醒。和 [[Semaphore限制共享名额]] 同属共享锁但语义不同——Semaphore 管”同时能有几个进”,它管”要凑齐几个才能继续”。限制:归零后不会自动复位,用完即失效。

参考来源

- 位置:《Java高并发核心编程.卷2,多线程、锁、JMM、JUC、高并发设计模式》第5章《JUC显式锁的原理与实战》5.5.3节《共享锁CountDownLatch》(源文件:_epub-src/OEBPS/Text/chapter177.xhtml) - 结论依据:原文定义"CountDownLatch可以指定一个计数值,在并发环境下由线程进行减一操作,当计数值变为0之后,被await方法阻塞的线程将会唤醒",并用"司机等100名乘客报数到齐才开车"的示例演示了主线程await()、N个并发任务各自countDown()的完整用法,因此推出本卡结论。 - 原始内容:CountDownLatch是一个常用的共享锁,其功能相当于一个多线程环境下的倒数门闩。CountDownLatch可以指定一个计数值,在并发环境下由线程进行减一操作,当计数值变为0之后,被await方法阻塞的线程将会唤醒。通过CountDownLatch可以实现线程间的计数同步。