Мой вопрос о 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?