Java 5多线程,捕获线程异常

时间:2015-06-15 14:12:03

标签: java multithreading exception concurrency java-5

我有一个生成线程的类(文件i / o)。我需要在线程中捕获异常 - 我不想做任何花哨的事情,我想杀死主线程,而是完全停止处理,以便它可以重新开始。

如果我在线程中捕获异常,那一切都很好,但调用者仍然继续,我希望它能够死掉。

我有一些想法,但没有什么能真正让我到处都是。什么是最简洁的方法 - CallBack,UnCaughtExceptionHandler?别的什么?  我也被降级为Java 5

1 个答案:

答案 0 :(得分:3)

最常见的方法是向Callable提交Executor,并收到Future。然后,您可以调用Future.get以查明是否抛出了任何异常。

至于UncaughtExceptionHandler,你只能在原始线程中使用它,因为Executor在内部处理未捕获的异常(因此你甚至看不到处理程序中未被捕获的异常!),并且因为你很少想在Executor s上使用原始线程,Callable是IMO最好的选择。