Кто прерывает мою тему?

Я понимаю, что делает InterruptedException и почему оно выбрасывается. Однако в моем приложении я получаю его при ожидании SwingUtilities.invokeAndWait() в потоке, который известен только моему приложению, и мое приложение никогда не вызывает Thread.interrupt() в любом потоке он также никому не передает ссылку на этот поток.

Итак, мой вопрос: кто прерывает мою тему?

Есть ли способ сказать? Есть ли причина, по которой InterruptedException не содержит имя потока, который запрашивает прерывание?

Я читал, что это может быть фреймворк или библиотека, которая делает это, мы используем следующее, но я не могу придумать причину для них прервать мой поток:

  • зимовать
  • весна
  • Log4J
  • Mysql разъем

3 ответа

Решение

Если возможно, вы можете продлить Thread и перезаписать interrupt() метод для этого потока, чтобы напечатать трассировку стека или вызвать исключение неподдерживаемой операции.

Вы также можете использовать расширенный Thread Класс для хранения ссылки на прерывающий поток и чтения его, как только вы поймаете прерванное исключение.

В общем, если вы хотите знать, кто что-то делает, подключите отладчик, поставьте точку останова, и все. Не нужно угадывать, сможете ли вы воспроизвести это!

В этом случае вы можете установить точку останова на Thread.interrupt(), Если есть и другие потоки, которые также прерываются (поэтому у вас есть "ложноположительные" попадания в точку останова), вы можете добавить условие точки останова (большинство IDE позволяют это легко сделать), например, проверяя имя потока,

Здесь есть что-то странное.

Из Javadoc invoke AndWait, InterruptedException брошен

если мы прервемся во время ожидания завершения потока обработки события, выполняющего doRun.run()

Вы пытались увидеть, посылает ли код, выполненный в EDT, какое-либо исключение? Или же код в этом EDT пытается изменить некоторые переменные этого потока (я знаю, что этот термин не является "ортодоксальным" в языке Java, но я надеюсь, что вы понимаете, что я имею в виду: любой код, подразумевающий синхронизацию, ожидание, соединение,...

Другие вопросы по тегам