三个方法:
实例方法:isInterrupted()、interrupt()
静态方法:interrupted()
个人理解:线程中断标志位只是线程的一个属性,为开发人员提供一个可控的线程环境,中断标志位默认false;应该理解为默认没有中断标志位,通过方法设置一个中断标志位,设置以后对线程的运行没有任何影响,就是一个标志,可以在代码中根据标志来控制线程运行。
1、NEW、TERMINATED状态下设置没有任何作用;
2、RUNNABLE、BLOCKED状态设置就会生效,可以在代码中把中断标志位作为一个条件来控制流程。
例如:
private synchronized void doSomething() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
while (!Thread.currentThread().isInterrupted()) {
System.out.println("还在执行");
}
}
3、WAITING、TIMED_WAITING状态下设置就会抛出InterruptedException;
同时如果先设置中断标志位,调用sleep()、wait()、yield()方法的时候也会抛出InterruptedException。