Примеры Java - Завершение потока
Изначально Java предоставляла метод stop() в Thread для завершения потоков, но этот метод небезопасен, поэтому его обычно не рекомендуется использовать.
В этой статье рассказывается об использовании метода interrupt для прерывания потоков.
Использование метода interrupt для прерывания потока можно разделить на два случая:
- (1) Поток находится в заблокированном состоянии, например, когда используется метод sleep.
- (2) Используйте while (!isInterrupted()) { ... } для определения, был ли поток прерван.
В первом случае использование метода interrupt приведёт к тому, что метод sleep выбросит исключение InterruptedException, а во втором случае поток завершится сразу. Следующий код демонстрирует использование метода interrupt в первом случае.
Файл ThreadInterrupt.java
public class ThreadInterrupt extends Thread
{
public void run()
{
try
{
sleep(50000); //Задержка на 50 секунд
}
catch (InterruptedException e)
{
System.out.println(e.getMessage());
}
}
public static void main(String[] args) throws Exception
{
Thread thread = new ThreadInterrupt();
thread.start();
System.out.println("Нажмите любую клавишу в течение 50 секунд, чтобы прервать поток!");
System.in.read();
thread.interrupt();
thread.join();
System.out.println("Поток завершился!");
}
}
Вывод вышеприведённого кода:
在50秒之内按任意键中断线程! sleep interrupted 线程已经退出!Другие расширения
Примеры Java