谁打断了我的线程?

Thi*_*ler 12 java swing multithreading interrupt interrupted-exception

我理解InterruptedException的作用以及它被抛出的原因.但是在我的应用程序中,我在等待SwingUtilities.invokeAndWait()一个只有我的应用程序知道的线程时得到它,而我的应用程序从不调用Thread.interrupt()任何线程,它也永远不会将线程的引用传递给任何人.

所以我的问题是:谁打断了我的线程?

有什么方法可以说出来吗?是否有理由说InterruptedException不包含请求中断的Thread的名称?

我读到它可能是一个框架或库来执行此操作,我们使用以下内容,但我无法想到它们中断我的线程的原因:

  • 过冬
  • 弹簧
  • Log4J的
  • Mysql连接器

jos*_*efx 11

如果可能,您可以扩展Thread并覆盖interrupt()此线程的方法以打印堆栈跟踪或抛出不受支持的操作异常.

您还可以使用扩展Thread类来存储对中断线程的引用,并在捕获中断的异常后读取它.


Wou*_*rts 5

一般来说,如果您想知道谁在做某事,请附加一个调试器,放置一个断点,然后就可以了。无需猜测是否可以重现它!

在这种情况下,您可以在 处放置断点Thread.interrupt()。如果还有其他线程也被中断(因此断点上有“误报”命中),您可以添加断点条件(大多数 IDE 允许您轻松执行此操作),例如通过检查线程的名称。