Thread类有一个表明线程是否被中断的属性值(boolean)。线程的interrupt()方法被调用时,该属性值被设置为true(仅仅是状态位的改变,实际线程中断需要编程做出相应操作)。isIterrupted()方法只是返回这个属性的值。
Interrupted()与isInterrupted()的区别:
http://blog.csdn.net/z69183787/article/details/25076033
PrimeGenerator类:
package sec01;
//线程的中断实例
public class PrimeGenerator extends Thread{
@Override
public void run(){
long number=1L;
while(true){
if(isPrime(number)){
System.out.printf("Number %d is Prime\n",number);
}
if(isInterrupted()){
System.out.println("The Prime Generator has been Interrupted");
return;
}
number++;
}
}
//判断一个数是否是素数
private boolean isPrime(long number){
if(number <= 2){
return true;
}
for(int i=2; i<number; i++){
if(number%i == 0){
return false;
}
}
return true;
}
}
Main方法类:
package sec01;
//线程的中断实例的主类
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread task = new PrimeGenerator();
task.start();
//等待5秒,中断线程
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
task.interrupt();
}
}