【发布时间】:2011-01-29 09:06:58
【问题描述】:
我了解 InterruptedException 的作用以及引发它的原因。但是,在我的应用程序中,当我在仅由我的应用程序知道的线程上等待 SwingUtilities.invokeAndWait() 时得到它,并且我的应用程序从不在任何线程上调用 Thread.interrupt(),它也从不将线程的引用传递给任何人。
所以我的问题是:谁打断了我的线程?
有什么方法可以告诉你吗? InterruptedException 不包含请求中断的线程名称是否有原因?
我读到它可能是执行此操作的框架或库,我们使用以下内容,但我想不出他们中断我的线程的原因:
- 休眠
- 春天
- Log4J
- Mysql 连接器
【问题讨论】:
-
我想你的意思是“谁 DARES 打断了我的话题?”
-
+1 - 你在做 Thread#join 吗?它抛出 InterruptedException。
-
确实,Scott,我希望我的线程不能被中断(因为无论如何我都不想遵守请求)。我们自己不做 Thread#join,但我可以想象 invokeAndWait 使用这样的机制。但是,Thead#join 会在另一个线程上调用中断吗?另外我很确定没有人等待我的线程完成(因为它永远不会)。
-
Thread.dumpStacktrace() 没有帮助???
-
当前线程不是执行中断的线程,所以 dumpStackTrace 不应该给我我需要的信息。异常的堆栈跟踪显示它发生在 Object.wait()
标签: java multithreading swing interrupted-exception