package p;
import java.math.BigInteger;
public class ThreadInterruptTest {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
BigInteger p = BigInteger.ONE;
while(!Thread.currentThread().isInterrupted()){
// 输出质数
System.out.println(p = p.nextProbablePrime());
}
}
});
t.start();
Thread.sleep(1000);
t.interrupt();
}
}
需要注意以下两个方法的区别:
boolean isInterrupted()
测试线程是否已经中断。线程的中断状态 不受该方法的影响。
static boolean interrupted()
测试当前线程是否已经中断。线程的中断状态 由该方法清除。换句话说,如果连续两次调用该方法,则第二次调用将返回 false(在第一次调用已清除了其中断状态之后,且第二次调用检验完中断状态前,当前线程再次中断的情况除外)。