java管理工人线程死亡

时间:2015-12-01 08:16:42

标签: java multithreading

所以,我有一个主线程产生了一堆“工作线程”,它在整个过程中与它一起工作。我想要的是,如果一个工作线程死于异常或诸如此类的东西,主线程也应该抛出一个运行时异常并且平静地死掉。

这可以通过在worker-tread中捕获异常并在退出之前设置error-flag来实现。然后主线程轮询该标志并在设置时抛出异常。这可以通过try-catch或设置异常处理程序来完成。

我的问题是,是否有一种更简单的方法,不包括主线程中的轮询。如果你知道我的意思,那就是自动的东西。

编辑: 好吧,许多人声称设置处理程序是答案,这是重复的。好吧,除非我在这里搞错了,处理程序由首先抛出异常的线程执行,所以我仍然需要设置一个标志来杀死主线程。我觉得这很清楚。所以让我澄清一下;

我想要的是,如果一个工作线程死于异常或诸如此类的东西,那么主线程也应该抛出运行时异常并且平静地死,而不使用标志,但是它已经完成了“自动“

1 个答案:

答案 0 :(得分:0)

在主线程中有一个CountdownLatch,让它等待CountdownLatch

线程退出时递减CountdownLatch。当发生这种情况时,主线程会正常运作。