【发布时间】:2015-12-01 08:16:42
【问题描述】:
所以,我有一个主线程,它会产生一堆“工作线程”,在整个过程中与它一起工作。我想要的是,如果一个工作线程因异常或其他原因而死,主线程也应该抛出一个运行时异常并平静地死去。
这可以通过在 worker-tread 中捕获异常并在退出前设置错误标志来实现。然后主线程轮询这个标志,如果它被设置则抛出一个异常。这可以通过 try-catch 或设置异常处理程序来完成。
我的问题是是否有一种更简单的方法不包括在主线程中进行轮询。如果您知道我的意思,就会自动运行。
编辑: 好吧,许多人声称设置处理程序就是答案,而且这是重复的。好吧,除非我在这里弄错了,否则处理程序是由首先引发异常的线程执行的,所以我仍然必须设置一个标志来终止主线程。我认为这很清楚。所以让我澄清一下;
我想要的是,如果一个工作线程死于异常或诸如此类,主线程也应该抛出一个运行时异常并平静地死去,不使用标志,但是已经完成了“自动”
【问题讨论】:
-
不,这不是同一个问题
-
嗯,这不是完全相同的问题,但非常相似,线程包含你需要的一切。
-
不完全是,但 UncaughtExceptionHandle 是您的首选实现。
-
好的,我看到的问题是,根据我自己的经验,uncaughtExceptionHandler 的工作方式与 try-catch 块没有什么不同,在任何一种情况下我都必须设置一个标志,因为处理程序是由正如我所写的那样,一个工作线程而不是主线程。这仍然意味着我必须在主线程中轮询一些状态。至少这是我上次尝试时必须做的。
标签: java multithreading