Подтвердить что ты не робот

Кто прерывает мою нить?

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

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

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

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

  • Hibernate
  • Spring
  • Log4J
  • Разъем Mysql
4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

Из javadoc invokeAndWait, InterruptedException выбрано

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

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