CountDownLatch使得使用CountDownLatch.await()的线程(当前线程)阻塞直到所有其它拥有CountDownLatch的线程执行完毕(countDown()结果为0)。例子如下:
第18行:endLatch.await()使得主线程(main)阻塞直到endLatch.countDown()为零才继续执行,在每个线程执行完毕的时候都调用一下countDown()(第37行),所以当所有线程都执行完毕后countDown()变为零,这个时候主线程开始继续执行。
运行结果如下:(每次运行的结果可能不同)
可以试试,把第18行注释掉,执行结果如下:(每次的运行结果可能不同)
可以看到所有的线程并没有执行完毕就打印出了"All threads are finished."
本文通过一个具体示例详细解析了CountDownLatch如何使主线程等待所有子线程完成工作。通过对比带与不带await()的方法,展示了CountDownLatch在并发编程中的作用。
820

被折叠的 条评论
为什么被折叠?



