JAvaスレッドにおけるinterrupt,interrupted,isInterruptメソッド
5235 ワード
(1)interrupt:現在のスレッドに停止フラグを付け、実際にスレッドを停止するわけではありません.(2)interrupted:現在のスレッドが中断されているかどうかをテストし、実行後にステータスIDをfalseに設定する機能を有する.(3)isInterrupt:スレッドThreadが割り込み状態であるかどうかをテストするが、ステータスIDはクリアしない.
出力結果:1を停止しますか?=trueは2を停止しますか?=false end!
出力結果:1を停止しますか?=trueは2を停止しますか?=true end!
出力結果:true false false true true false end!
以上の出力から,interruptedは1回検出した後にfalseにタグを置くが,isInterruptedはこの割り込みタグを取り除くことはない.
public class Run2 {
public static void main(String[] args) {
Thread.currentThread().interrupt();
System.out.println(" 1?=" + Thread.interrupted());
System.out.println(" 2?=" + Thread.interrupted());
System.out.println("end!");
}
}
出力結果:1を停止しますか?=trueは2を停止しますか?=false end!
public class Run3 {
public static void main(String[] args) {
try {
MyThread thread = new MyThread();
thread.start();
thread.interrupt();
System.out.println(" 1?="+thread.isInterrupted());
System.out.println(" 2?="+thread.isInterrupted());
} catch (Exception e) {
System.out.println("main catch");
e.printStackTrace();
}
System.out.println("end!");
}
}
出力結果:1を停止しますか?=trueは2を停止しますか?=true end!
public class Run4 {
public static void main(String[] args) {
try {
Thread.currentThread().interrupt();
System.out.println(Thread.interrupted());
System.out.println(Thread.interrupted());
System.out.println(Thread.currentThread().isInterrupted());
System.out.println(Thread.currentThread().isInterrupted());
Thread.currentThread().interrupt();
System.out.println(Thread.currentThread().isInterrupted());
System.out.println(Thread.currentThread().isInterrupted());
Thread.currentThread().interrupt();
System.out.println(Thread.interrupted());
System.out.println(Thread.interrupted());
} catch (Exception e) {
System.out.println("main catch");
e.printStackTrace();
}
System.out.println("end!");
}
}
出力結果:true false false true true false end!
以上の出力から,interruptedは1回検出した後にfalseにタグを置くが,isInterruptedはこの割り込みタグを取り除くことはない.