线程中断的理解
例子一
线程调用interrupt()线程会中止吗?
for(int i=0;i<1000;i++){
if(i==10){
Thread.currentThread().stop();
}
System.out.println(i);
}
结果是打印0-9,因为到10线程stop停止了
for(int i=0;i<1000;i++){
if(i==10){
Thread.currentThread().interrupt();
}
System.out.println(i);
}
线程打印0-1000,interrupt不会导致循环停止
分析一下interrupt()是设置线程的中断状态
例如Thread.sleep()是要强制捕捉interrupt异常的
可以试一下
Thread test = new Thread() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
test.start();
test.interrupt();
sleep是会触发异常的
总结interrupt()是设置中断标志,线程可以判断Thread,isInterrupted()判断线程已经中断,但是直接调用此方法线程仍然继续运行
网友评论