TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #2726 1.58K
🤔 Что за исключение 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(); // Восстанавливаем флаг прерывания
}


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 2
More from @easy_java_ru
  1. Oct 1, 2026🤔 Как подключить свою библиотеку в другом проекте? Для подключения своей библиотеки: - со…
  2. Oct 1, 2026Post #2931
  3. Oct 1, 2026🤔 Как бороться в БД с SQL Injection? SQL Injection – это атака, при которой злоумышленник…
  4. Sep 30, 2026Post #2929
  5. Sep 30, 2026🤔 Какие есть методы HTTP-запросов? - GET — получение данных; - POST — создание ресурса; -…
  6. Sep 30, 2026Post #2927
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 →