完成任务后CountdownLatch countDown方法行为

时间:2015-06-15 14:14:26

标签: java multithreading concurrency countdownlatch

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

CountDownLatch latch = new CountDownLatch(3);

latch.await().

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

// do something
 latch.countDown();

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

该线程是否在此刻被终止,或者在进入空闲状态时等待一段时间。 ?

我可以在java doc of countdown latch上找到它。

2 个答案:

答案 0 :(得分:1)

It depends upon the code in the child threads. If there is more computation to do after the CountDownLatch it will then continue with the computation. If not, the the thread will termninate.

答案 1 :(得分:1)

您过分关注将N个从属线程信号发送给主线程的典型示例。

CountDownLatch事件只是一个允许代码阻止的类,直到某些外部代理将锁存器倒计数到0.周期。

这些代理可以是N个不同的线程,如您的示例中所示,也可以是单个向下计数多次的线程。因此,您应该停止将这些代理视为线程。闩锁不知道它们并且不关心如果不是完成它们,在倒计时之后去酒吧喝啤酒。它不是一个线程管理器,它不会监视任何线程的生命周期。