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

CountDownLatch 是一个同步工具类,用于使一个或多个线程等待,直到某个线程执行特定的操作。它内部维护一个计数器,初始值为 count。每个线程调用 countDown() 方法,将计数器减 1。当计数器减到 0 时,所有等待的线程都将被唤醒,继续执行。

CountDownLatch 的作用

等待多个线程完成: 当程序需要多个线程并行执行任务,并且主线程需要等待所有线程完成后再继续执行时,可以使用 CountDownLatch。

同步线程执行顺序: 当程序中存在多个线程需要按照特定顺序执行时,可以使用 CountDownLatch 来控制线程的执行顺序。

CountDownLatch 的实现原理

CountDownLatch 内部使用了一个 sync 对象,它是一个 ReentrantLock 的子类,并重写了 lock() 和 unlock() 方法。CountDownLatch 的 countDown() 方法会调用 sync 对象的 lock() 方法,并将计数器减 1。如果计数器减到 0,则调用 sync 对象的 unlock() 方法,唤醒所有等待的线程。

CountDownLatch 实现等待多个线程完成的步骤

创建一个 CountDownLatch 实例,并指定计数器的初始值。

在每个线程中,调用 countDown() 方法,将计数器减 1。

在主线程中,调用 CountDownLatch 实例的 await() 方法,阻塞当前线程,直到计数器减到 0。

当计数器减到 0 时,await() 方法返回,主线程继续执行。

本文作者:whitebear

本文链接:

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