Java サンプル - スレッドの終了

Java 实例Java サンプル

Javaでは元々Threadにstop()メソッドが提供されており、スレッドを終了するために使用されていましたが、このメソッドは安全ではないため、一般的には使用を推奨されません。

この記事では、interruptメソッドを使用してスレッドを中断する方法を紹介します。

interruptメソッドを使用してスレッドを中断する方法は、次の2つのケースに分けられます。

  • (1) スレッドがブロック状態にある場合、例えばsleepメソッドを使用した場合。
  • (2) while(!isInterrupted()){……} を使用してスレッドが中断されているかどうかを判断する場合。

最初のケースでinterruptメソッドを使用すると、sleepメソッドがInterruptedException例外をスローします。2番目のケースでは、スレッドは直接終了します。以下のコードは、最初のケースで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 サンプル

その他の拡張