TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #1980 2.48K
🤔 Что за исключение Interrupted Exception?

InterruptedException — это проверяемое исключение (checked exception) в Java, которое выбрасывается, когда поток (Thread) прерывается во время выполнения метода, который поддерживает прерывание (например, sleep(), wait(), join() и др.).

🚩Почему `InterruptedException` существует?

В многопоточной среде иногда требуется прервать выполнение потока, например, для завершения долгой задачи или для корректной остановки программы. Вместо грубого завершения потока (Thread.stop(), который устарел и считается небезопасным) Java предлагает мягкий способ прерывания через флаг прерывания и обработку InterruptedException.

🚩Когда выбрасывается `InterruptedException`?

Это исключение выбрасывается, если поток:
1. Ожидает (wait(), join())
2. Спит (sleep())
3. Блокируется на очереди (BlockingQueue.take(), LockSupport.park())
И при этом его прерывают с помощью метода interrupt().

Пример кода: обработка InterruptedException
class MyThread extends Thread {
public void run() {
try {
System.out.println("Поток засыпает...");
Thread.sleep(5000); // Поток засыпает на 5 секунд
} catch (InterruptedException e) {
System.out.println("Поток был прерван во время сна!");
}
System.out.println("Поток продолжает работу...");
}
}

public class Main {
public static void main(String[] args) {
MyThread t = new MyThread();
t.start();

try {
Thread.sleep(2000); // Даем потоку 2 секунды поработать
} catch (InterruptedException e) {
e.printStackTrace();
}

t.interrupt(); // Прерываем поток
}
}


Вывод программы
Поток засыпает...
Поток был прерван во время сна!
Поток продолжает работу...


🚩Что делать после `InterruptedException`?

1. Просто обработать исключение (как в примере выше).
2. Передать исключение дальше — например, если метод не может корректно обработать прерывание, он передает его вызывающему коду:
   void myMethod() throws InterruptedException {
Thread.sleep(1000); // Может выбросить исключение
}


🟠Восстановить флаг прерывания
если прерывание важно для логики программы:
   catch (InterruptedException e) {
Thread.currentThread().interrupt(); // Восстанавливаем флаг прерывания
}


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 9
More from @easy_java_ru
  1. Oct 4, 2026Post #2943
  2. Oct 4, 2026🤔 Что необходимо для того чтобы клонировать один объект в другой? Для клонирования объект…
  3. Oct 4, 2026🤔 Что такое сигнатура? Сигнатура метода – это его уникальная идентификация в классе. Она…
  4. Oct 4, 2026Post #2940
  5. Oct 3, 2026🤔 В каких состояниях может находиться поток? Поток может находиться в следующих состояния…
  6. Oct 3, 2026Post #2938
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →