如何检查 Java 线程是否因异常终止?

Nic*_*aro 5 java multithreading

给定一个线程已经完成了一些工作(它的状态是 Thread.State.TERMINATED),有没有办法了解线程是否正确完成了 Thread.run()/Runnable.run() 方法或抛出了一个未捕获的可扔?

Afaik,一个线程在正常退出和抛出 throwable 时都会进入 TERMINATED 状态。

有人建议使用 UncaughtExceptionHandler。鉴于一个线程只能有一个 UncaughtExceptionHandler(所有线程的默认设置除外),并且线程代码可以更改提供的一个,使用它们是一种好习惯吗?

Con*_*Del 1

您感兴趣的功能可以使用Callable将 run 方法包装在 try { } catch 块中并在Exception遇到问题时返回 Future 对象来完成