Back to questions
ВТБ
Junior — Middle
59
Можете объяснить, как функционирует механизм прерывания в потоках или процессах?
Companies where asked
Answer from AI
sobes.tech AI
В Java механизм прерывания потоков используется для того, чтобы сигнализировать потоку о необходимости остановки или изменения своего поведения. Прерывание не останавливает поток сразу, а устанавливает флаг прерывания, который поток должен проверить и корректно обработать.
Основные моменты:
- Метод
interrupt()устанавливает флаг прерывания у потока. - Поток может проверить состояние с помощью
Thread.interrupted()илиisInterrupted(). - Если поток находится в состоянии ожидания (например,
sleep(),wait()), вызовinterrupt()вызоветInterruptedException.
Пример:
Thread thread = new Thread(() -> {
while (!Thread.currentThread().isInterrupted()) {
// Выполнение работы
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// Поток был прерван во время сна
Thread.currentThread().interrupt(); // Восстановить флаг прерывания
break; // Завершить цикл
}
}
System.out.println("Поток завершён");
});
thread.start();
// Через некоторое время прервать поток
thread.interrupt();
Таким образом, прерывание — это способ мягко сигнализировать потоку о необходимости завершения или изменения работы, а не принудительно его останавливать.