1

假设我有一个大小为 3 的倒计时锁存器,即从父线程产生 3 个线程。

CountDownLatch latch = new CountDownLatch(3);

latch.await().

现在将有三个线程在各自的任务完成后调用 countDown。

// do something
 latch.countDown();

我的问题是,任务完成的那一刻,执行该任务的线程的行为是什么。

该线程是在那一刻立即终止,还是通过进入空闲状态等待一段时间。?

我可以在倒计时锁存器的 Java 文档的任何地方找到它。

4

2 回答 2

1

这取决于子线程中的代码。如果在之后还有更多计算要做,CountDownLatch那么它将继续计算。如果没有,线程将终止。

于 2015-06-15T14:16:38.830 回答
1

您过于关注让 N 个从属线程向主线程发出信号的典型示例。

这个CountDownLatch东西只是一个类,它允许代码阻塞,直到一些外部代理将锁存器倒计时到 0。期间。

这些代理可以是 N 个不同的线程,如您的示例所示,也可以是单个线程多次倒计时。因此,您应该停止将这些代理视为线程。闩锁不认识他们,也不在乎他们是否在倒计时后去酒吧喝啤酒,而不是完成。它不是线程管理器,也不监视任何线程的生命周期。

于 2015-06-19T15:48:58.573 回答