
正文
Java多线程(五)停止线程 interrupt
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
调用interrupt方法仅仅是在当前线程中打了一个停止的标记,并不是真正停止线程。
this.interrupted() :测试当前线程是否已经中断,执行后具有将状态标志清除为false的功能
isInterrupted() : 测试线程Thread对象是否已经是中断状态,但不清除状态标志。
public class InterruptDemo extends Thread{ public void run(){
super.run();
try{ for(int i =0;i< 500000;i++){
if(this.isInterrupted()){
System.out.println("run:" +InterruptDemo.interrupted());
System.out.println("已经是停止状态了!");
//throw new InterruptedException(); 代替break 解决 后面语句继续执行的问题, 即:System.out.println("我在for的下面,线程终止了");
// break;
throw new InterruptedException();
}
System.out.println("i="+(i+1));
}
System.out.println("我在for的下面,线程终止了");
}catch(Exception e){
System.out.println("进入run方法中的catch了!!");
e.printStackTrace();
}
}
public static void main(String[] args) { try {
InterruptDemo thread = new InterruptDemo();
thread.start();
Thread.sleep(2000);
thread.interrupt();
System.out.println("thread"+thread.isInterrupted());
System.out.println("main:"+InterruptDemo.interrupted()); //Thread.currentThread().interrupt();
//System.out.println(Thread.interrupted());
///System.out.println(Thread.interrupted()); } catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}






