我了解 InterruptedException 的作用以及抛出它的原因。然而,在我的应用程序中,当我在一个只有我的应用程序知道的线程上等待 SwingUtilities.invokeAndWait()
时,我得到了它,而且我的应用程序从不调用 Thread.interrupt()
在任何线程上,它也永远不会将线程的引用传递给任何人。
所以我的问题是:谁打断了我的线程?
有什么方法可以判断吗? InterruptedException 不包含请求中断的线程的名称是否有原因?
我读到它可能是执行此操作的框架或库,我们使用以下内容,但我想不出他们打断我的线程的原因:
- hibernate
- Spring
- Log4J
- Mysql 连接器
最佳答案
如果可能,您可以扩展 Thread
并覆盖此线程的 interrupt()
方法以打印堆栈跟踪或抛出不受支持的操作异常。
您还可以使用扩展的 Thread
类来存储对中断线程的引用,并在捕获到中断的异常时读取它。
关于java - 谁打断了我的话题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2476002/