JAvaスレッドにおけるinterrupt,interrupted,isInterruptメソッド


(1)interrupt:現在のスレッドに停止フラグを付け、実際にスレッドを停止するわけではありません.(2)interrupted:現在のスレッドが中断されているかどうかをテストし、実行後にステータスIDをfalseに設定する機能を有する.(3)isInterrupt:スレッドThreadが割り込み状態であるかどうかをテストするが、ステータスIDはクリアしない.
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はこの割り込みタグを取り除くことはない.