Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谁打断了我的话?_Java_Multithreading_Swing_Interrupted Exception - Fatal编程技术网

Java 谁打断了我的话?

Java 谁打断了我的话?,java,multithreading,swing,interrupted-exception,Java,Multithreading,Swing,Interrupted Exception,我理解InterruptedException的作用以及抛出它的原因。然而,在我的应用程序中,当我在一个只有我的应用程序知道的线程上等待SwingUtilities.invokeAndWait()时,我得到了它,并且我的应用程序从未在任何线程上调用thread.interrupt(),它也从未将线程的引用传递给任何人 所以我的问题是:谁打断了我的线程 有什么办法可以说吗?InterruptedException不包含请求中断的线程的名称有什么原因吗 我读到它可以是一个框架或库来实现这一点,我们使

我理解InterruptedException的作用以及抛出它的原因。然而,在我的应用程序中,当我在一个只有我的应用程序知道的线程上等待
SwingUtilities.invokeAndWait()
时,我得到了它,并且我的应用程序从未在任何线程上调用
thread.interrupt()
,它也从未将线程的引用传递给任何人

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

有什么办法可以说吗?InterruptedException不包含请求中断的线程的名称有什么原因吗

我读到它可以是一个框架或库来实现这一点,我们使用以下方法,但我想不出它们中断我的线程的原因:

  • 冬眠
  • 弹簧
  • Log4J
  • Mysql连接器

    • 这里有些奇怪

      从的javadoc中,抛出一个
      中断异常

      如果我们在等待事件调度线程完成执行doRun.run()时被中断


      您是否尝试过查看EDT中执行的代码是否发送任何异常?或者EDT中的代码试图修改这个线程的一些变量(我知道这个术语不是“正统的”)在java语言中,但我希望你明白我的意思:任何暗示同步、等待、加入的代码,

      一般来说,如果你想知道谁在做什么,附加一个调试器,放置一个断点,然后就可以了。无需猜测是否可以复制它


      在这种情况下,您可以在
      Thread.interrupt()
      处设置断点。如果有其他线程也被中断(因此您在断点上有“假阳性”点击),您可以添加断点条件(大多数IDE都允许您轻松地这样做),例如,通过检查线程的名称。

      如果可能,您可以扩展
      线程
      并覆盖该线程的
      中断()
      方法,以打印堆栈跟踪或引发不受支持的操作异常


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

      我想您的意思是“谁敢中断我的线程?”+1-您正在执行线程#连接?它抛出中断的异常。实际上,Scott,我更希望我的线程不可中断(因为我无论如何都不想遵从请求)。我们不执行线程连接,但我可以想象invokeAndWait使用了这样一种机制。然而,Thead#join会在另一个线程上调用中断吗?而且我非常确定没有人会等待我的线程完成(因为它永远不会完成)。Thread.dumpStacktrace()没有帮助???当前线程不是执行中断的线程,因此dumpStackTrace不应该提供我需要的信息。异常的stacktrace显示它发生在Object.wait()中如果我们正在等待的Runnable抛出异常,它应该给出一个InvocationTargetException,事实并非如此。我们的线程在等待时可能有一个锁,这会导致它吗?我确信我们没有死锁。我们等待的线程创建了一个我们在等待线程中使用的对话框。