Кто прерывает мою тему?
Я понимаю, что делает InterruptedException и почему оно выбрасывается. Однако в моем приложении я получаю его при ожидании SwingUtilities.invokeAndWait()
в потоке, который известен только моему приложению, и мое приложение никогда не вызывает Thread.interrupt()
в любом потоке он также никому не передает ссылку на этот поток.
Итак, мой вопрос: кто прерывает мою тему?
Есть ли способ сказать? Есть ли причина, по которой InterruptedException не содержит имя потока, который запрашивает прерывание?
Я читал, что это может быть фреймворк или библиотека, которая делает это, мы используем следующее, но я не могу придумать причину для них прервать мой поток:
- зимовать
- весна
- Log4J
- Mysql разъем
3 ответа
Если возможно, вы можете продлить Thread
и перезаписать interrupt()
метод для этого потока, чтобы напечатать трассировку стека или вызвать исключение неподдерживаемой операции.
Вы также можете использовать расширенный Thread
Класс для хранения ссылки на прерывающий поток и чтения его, как только вы поймаете прерванное исключение.
В общем, если вы хотите знать, кто что-то делает, подключите отладчик, поставьте точку останова, и все. Не нужно угадывать, сможете ли вы воспроизвести это!
В этом случае вы можете установить точку останова на Thread.interrupt()
, Если есть и другие потоки, которые также прерываются (поэтому у вас есть "ложноположительные" попадания в точку останова), вы можете добавить условие точки останова (большинство IDE позволяют это легко сделать), например, проверяя имя потока,
Здесь есть что-то странное.
Из Javadoc invoke AndWait, InterruptedException
брошен
если мы прервемся во время ожидания завершения потока обработки события, выполняющего doRun.run()
Вы пытались увидеть, посылает ли код, выполненный в EDT, какое-либо исключение? Или же код в этом EDT пытается изменить некоторые переменные этого потока (я знаю, что этот термин не является "ортодоксальным" в языке Java, но я надеюсь, что вы понимаете, что я имею в виду: любой код, подразумевающий синхронизацию, ожидание, соединение,...