Почему нельзя просто проигнорировать InterruptedException?
Почему нельзя просто проигнорировать InterruptedException? Поток может ждать завершения задачи, блокировки или таймера. Другой поток вправе попросить его остановиться через interrupt. Например, worker делает паузу между проверками: while (!Thread.currentThread().isInterrupted()) { processNext(); Thread.sleep(1000); } Если вызвать interrupt во время sleep, метод выбросит InterruptedException. При этом флаг прерывания будет очищен. Это важный момент: после перехвата исключения простая проверка isInterrupted уже не увидит запрос на остановку. Такой обработчик теряет сигнал: try { Thread.sleep(1000); } catch (InterruptedException e) { System.out.println("continue"); } Программа продолжит работу, будто отмены не было. Это особенно неприятно в пуле потоков и при остановке сервиса, вызывающий код считает, что попросил завершить задачу, а она выполняется дальше. Если метод может передать исключение выше, оставь его в сигнатуре: void pause() throws InterruptedException { Thread.sleep(1000); } Тогда решение об остановке примет вызывающий уровень. А если исключение приходится перехватить внутри Runnable или другого метода без throws, восстанови флаг и заверши работу: try { Thread.sleep(1000); } catch (InterruptedException e) { Thread.currentThread().interrupt(); return; } Восстановленный флаг увидит внешний код, который проверяет состояние потока. Java Библиотека | Мы в Телеграм