Java5 多线程,捕获线程异常

Java 5 Multi threading, catch thread exceptions

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

如果我在线程中捕捉到异常,那很好,但是调用者仍然继续,我希望它死掉。

我有一些想法,但没有什么能真正让我有所作为。最简洁的方法是什么——CallBack,UnCaughtExceptionHandler?还有别的吗? 我也降级到Java 5

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

至于 UncaughtExceptionHandler,您只能真正将其与原始线程一起使用,因为 Executors 在内部处理未捕获的异常(因此您甚至看不到处理程序中的未捕获异常!),并且由于您很少想在 Executor 上使用原始线程,因此 Callable 是 IMO 最好的选择。