Прерывание потока — это механизм, чтобы сигнализировать потоку, что он должен остановить свою текущую операцию. Это особенно полезно в конкретных ситуациях, когда нужно изменить ход выполнения потока.
sleep(), чтобы он сразу же возобновил выполнениеwait() на мониторе объекта, чтобы он продолжил работуКогда ты вызываешь метод interrupt() на потоке, он устанавливает внутренний флаг прерывания. Потоки в заблокированных состояниях — таких как sleep(), wait() или join() — получат InterruptedException и проснутся, что позволит им корректно обработать прерывание.
InterruptedExceptionThread worker = new Thread(() -> {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// Обработай прерывание
Thread.currentThread().interrupt();
}
});
worker.interrupt(); // Пробуждает поток из состояния sleep
Вызов interrupt() на потоке немедленно останавливает его выполнение и завершает поток независимо от его текущего состояния.
Новый — ещё не проверен сообществом
Вы