我在传递给线程 t 的 Runnable 中有以下代码:
public void run() {
logger.debug("Starting thread " + Thread.currentThread());
try {
doStuff();
} catch (Exception e) {
logger.debug("Exception in Thread " + Thread.currentThread());
}
logger.debug("End of thread " + Thread.currentThread());
}
我遇到了一个错误,我发现在以下情况下出现死锁
- 我的日志只打印了线程消息的开始
- 线程转储显示线程 t(应该执行此操作)不再运行
有没有什么神奇的方法可以让这个线程在不记录线程结束消息或抛出异常的情况下提前终止?
最佳答案
您确定 doStuff()
没有抛出 Error
吗?将 catch (Exception e)
更改为 catch (Throwable t)
。可以使用 Thread.stop()
终止 Java 中的线程,但这种可能性很小。
关于java线程提前终止并且可疑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/791835/