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 サンプル