一.在java的SDK 中,Thread.java类提供了两种判断线程是否是停止状态的方法:
1)this.interrupted():测试当前线程是否已经中断。
2)this.isInterrupted():测试线程是否已经中断。
二.
1)案例一:.interrupted()
package org.zhq.test;
/**
* @author 作者 hq.zheng:
* @version 创建时间:2018-6-11 下午3:02:47
* 类说明
*/
public class Run {
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!");
}
}
结果:
如果两次调用该方法,则第二次调用将返回false(在第一次调用已经清除了其中中断状态之后,且第二次调用检验完中断状态前,当前线程再次中断的情况除外),interrupted具有清除状态的功能。
1)案例二:.isInterrupted()
package org.zhq.test;
/**
* @author 作者 hq.zheng:
* @version 创建时间:2018-6-11 下午3:02:47
* 类说明
*/
public class Run {
public static void main(String[] args) {
try {
Thread thread=Thread.currentThread();
thread.interrupt();
System.out.println("是否停止1?"+thread.isInterrupted());
System.out.println("是否停止2?"+thread.isInterrupted());
System.out.println("end!");
} catch (Exception e) {
// TODO: handle exception
}
}
}
结果:
从结果看出,isInterrupted并未清除状态标志,所以打印两个true
三.总结:
1)this.interrupted():测试当前线程是否已经中断,执行后具有将状态标志清除为false的功能。
2)this.isInterrupted():测试线程是否已经中断,但不清除状态标志。