Java サンプル - スレッドの中断
以下の例では、interrupt() メソッドを使用してスレッドを中断し、isInterrupted() メソッドを使用してスレッドが中断されたかどうかを判断する方法を示しています:
Main.java ファイル
public class Main extends Object
implements Runnable {
public void run() {
try {
System.out.println("in run() - work2() メソッドを実行します");
work2();
System.out.println("in run() - work2() メソッドから戻りました");
}
catch (InterruptedException x) {
System.out.println("in run() - work2() メソッドを中断します");
return;
}
System.out.println("in run() - 休眠後に実行");
System.out.println("in run() - 正常に終了");
}
public void work2() throws InterruptedException {
while (true) {
if (Thread.currentThread().isInterrupted()) {
System.out.println("C isInterrupted()=" + Thread.currentThread().isInterrupted());
Thread.sleep(2000);
System.out.println("D isInterrupted()=" + Thread.currentThread().isInterrupted());
}
}
}
public void work() throws InterruptedException {
while (true) {
for (int i = 0; i < 100000; i++) {
int j = i * 2;
}
System.out.println("A isInterrupted()=" + Thread.currentThread().isInterrupted());
if (Thread.interrupted()) {
System.out.println("B isInterrupted()=" + Thread.currentThread().isInterrupted());
throw new InterruptedException();
}
}
}
public static void main(String[] args) {
Main si = new Main();
Thread t = new Thread(si);
t.start();
try {
Thread.sleep(2000);
}
catch (InterruptedException x) {
}
System.out.println("in main() - 他のスレッドを中断");
t.interrupt();
System.out.println("in main() - 終了");
}
}
上記のコードを実行した出力結果は次のとおりです:
in run() - 将运行 work2() 方法 in main() - 中断其他线程 in main() - 离开 C isInterrupted()=true in run() - 中断 work2() 方法その他の拡張
Java サンプル