Предположим, что у меня есть следующий код:Прерванный исключение против isInterrupted в время цикла
while(!Thread.currentThread().isInterrupted()){
//do something
Thread.sleep(5000);
}
Теперь Thread.sleep
бросает `InterruptedException так должно быть так:
while(!Thread.currentThread().isInterrupted()){
//do something
try{
Thread.sleep(5000);
} catch(InterruptedException e){
}
}
Если я ударил catch
будет ли цикл while
продолжить или мне нужно сделать Thread.currentThread().interrupt()
? Если я вызову этот метод, не будет ли это также вызвано InterruptedException
? В противном случае, как я получил исключение в первую очередь?
Кроме того, если у меня есть:
while (!Thread.currentThread().isInterrupted()){
//do something
callMethod();
}
private void callMethod(){
//do something
try {
Thread.sleep(5000);
} catch(InterruptedException e){
}
}
снова сломается мой while
цикл?
См. Здесь: http://stackoverflow.com/questions/9901649/after-catching-interruptedexception-why-thread-currentthread-isinterrupted –
И здесь: http://stackoverflow.com/questions/1024651/do-i -have-to-worry-about-interruptedexceptions-if-i-dont-interrupt-anything-mys –
Вы должны прочитать [Закон саботированного дверного звонка] (http://www.javaspecialists.eu/archive/Issue146.html). – OldCurmudgeon