Примеры Java - Завершение потока

Java 实例Примеры 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 实例Примеры Java

Другие расширения