本文主要是介绍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却不会去掉这个中断标记。
这篇关于java线程中的interrupt、interrupted、isInterrupt方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!