java线程中的interrupt、interrupted、isInterrupt方法

(1)interrupt:在当前线程打一个停止标记,并不是真的停止线程。
(2)interrupted:测试当前线程是否已经中断,执行后具有将状态标识置为false的功能。
(3)isInterrupt:测试线程Thread是否已经是中断状态,但不清除状态标识。

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
false
true
true
true
false
end!

根据以上的输出可以看见,interrupted在检测一次之后就把标记置为false,但是isInterrupted却不会去掉这个中断标记。

你可能感兴趣的:(多线程)