编辑
2024-08-26
面试题库
0
请注意,本文编写于 149 天前,最后修改于 149 天前,其中某些信息可能已经过时。

计数器:

CountDownLatch: 计数器是一次性的,当所有线程都调用 countDown() 方法后,计数器减到 0,主线程才会继续执行。之后,CountDownLatch 无法重置或修改计数器。

CyclicBarrier: 计数器是可重置的,每次执行完 await() 方法后,主线程都会继续执行,然后可以通过 reset() 方法重置计数器,使其恢复到初始值,以便再次使用。

线程数量:

CountDownLatch: 可以等待多个线程完成,但不需要指定具体的线程数量。

CyclicBarrier: 必须指定等待的线程数量,即构造函数的参数。

应用场景:

CountDownLatch: 主要用于等待多个线程完成同一个任务,例如,多个线程分别计算数据,最后汇总结果。

CyclicBarrier: 主要用于等待多个线程到达同一个同步点,例如,多个线程分别执行不同的任务,最后再合并结果。

阻塞时间:

CountDownLatch: 直到计数器减到 0 才继续,主线程的阻塞时间取决于其他线程执行 countDown() 方法的顺序。

CyclicBarrier: 直到所有线程都到达同步点才继续,主线程的阻塞时间取决于所有线程执行 await() 方法的顺序。

本文作者:whitebear

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!