Когда Java Thread.sleep выдает исключение InterruptedException? Безопасно ли игнорировать это? Я не занимаюсь многопоточностью. Я просто хочу подождать несколько секунд, прежде чем повторить какую-то операцию.
111
Когда Java Thread.sleep выдает исключение InterruptedException? Безопасно ли игнорировать это? Я не занимаюсь многопоточностью. Я просто хочу подождать несколько секунд, прежде чем повторить какую-то операцию.
InterruptedException
это поймано исключение, так что вы не можете скомпилировать , если не обрабатывать или объявлять этот тип исключения на любом методе , который присоединяется или СпитThread
, или вызовыwait()
наObject
.Ответы:
Обычно НЕ следует игнорировать исключение. Взгляните на следующий документ:
См. Всю статью здесь:
http://www.ibm.com/developerworks/java/library/j-jtp05236/index.html?ca=drs-
источник
Если
InterruptedException
выбрано, это означает, что что-то хочет прервать (обычно завершить) этот поток. Это запускается вызовомinterrupt()
метода нитей . Метод ожидания обнаруживает это и генерирует,InterruptedException
чтобы код catch мог немедленно обработать запрос на завершение и не ждать, пока истечет указанное время.Если вы используете его в однопоточном приложении (а также в некоторых многопоточных приложениях), это исключение никогда не будет запущено. Игнорировать это, имея пустое предложение catch, я бы не рекомендовал. Бросок
InterruptedException
очищает прерванное состояние потока, поэтому при неправильной обработке эта информация теряется. Поэтому предлагаю запустить:Что снова устанавливает это состояние. После этого завершите выполнение. Это было бы правильным поведением, даже жестким никогда не использовалось.
Что может быть лучше, так это добавить это:
... оператор в блок catch. По сути, это означает, что этого никогда не должно происходить. Поэтому, если код повторно используется в среде, где это может произойти, он будет жаловаться на это.
источник
RuntimeException
.В информационном бюллетене Java Specialists (который я безоговорочно рекомендую) была интересная статья об этом и о том, как справиться с расширением
InterruptedException
. Это стоит прочитать и переварить.источник
Такие методы, как
sleep()
иwait()
класса,Thread
могут вызывать файлInterruptedException
. Это произойдет, если кто-то другойthread
захочет прервать то,thread
что ждет или спит.источник
Надежный и простой способ справиться с этим в однопоточном коде - это поймать его и вернуть в исключение RuntimeException, чтобы избежать необходимости объявлять его для каждого метода.
источник
InterruptedException
Обычно создается , когда сон прерывается.источник