2015-06-15 54 views
1

我有一個生成線程(文件I/O)的類。我需要在線程中捕獲異常 - 我不想做任何奇怪的事情,我想殺死主線程,而是完全停止處理,以便重新開始。Java 5多線程,捕捉線程異常

如果我在線程中捕捉到異常,這一切都很好,但調用者仍然繼續,我希望它死亡。

我已經有了一些想法,但沒有什麼是真的讓我在任何地方。什麼是最簡潔的方式來做到這一點 - CallBack,UnCaughtExceptionHandler?還有別的嗎? 我也退居到Java 5

+0

重複的http://stackoverflow.com/questions/6546193/how-to-catch-an-exception-from-a-thread – BeyelerStudios

+0

殺死一個線程是幻想(或相當有問題)。 –

回答

3

最常見的方法是提交CallableExecutor,並接收Future。然後,您可以致電Future.get以查明是否有任何異常被拋出。

至於UncaughtExceptionHandler,你只能真的在原始線程中使用它,因爲Executor可以在內部處理未捕獲的異常(因此你甚至不會在處理程序中看到未捕獲的異常!),並且由於你很少要使用原始線程超過Executor s,Callable是IMO最好的選擇。