Мой вопрос о InterruptedException
, который вызывается из метода Thread.sleep
. Во время работы с ExecutorService
я заметил странное поведение, которое я не понимаю; вот что я имею в виду:
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> {
while(true)
{
//DO SOMETHING
Thread.sleep(5000);
}
});
С этим кодом компилятор не Thread.sleep
мне ни ошибки, ни сообщения о том, что InterruptedException
из Thread.sleep
должен быть Thread.sleep
. Но когда я пытаюсь изменить условие цикла и заменить "true" на некоторую переменную, подобную этой:
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> {
while(tasksObserving)
{
//DO SOMETHING
Thread.sleep(5000);
}
});
Компилятор постоянно жалуется, что InterruptedException
должен быть обработан. Может кто-нибудь объяснить мне, почему это происходит, и почему, если условие имеет значение true, компилятор игнорирует InterruptedException?