终止线程
stop方法,已经被弃用,无法预期
interrupt
interrupt方法其作用是中断此线程(此线程不一定是当前线程,而是指调用该方法的Thread实例所代表的线程),但实际上只是给线程设置一个中断标志,线程仍会继续运行。
在run方法里调用isInterrupted()方法
public static void main(String[] args) {
Thread thread = new Thread() {
@Override
public void run() {
super.run();
for (int i = 0; i < 100000; i++) {
if(Thread.interrupted()){
System.out.println("run: interrupted stop");
return;
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("run: sleep stop");
return;
}
System.out.println("number" + i);
}
}
};
thread.start();
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
thread.interrupt();
}
在4秒后for循环里会捕捉到打断异常,如果不处理代码会继续向下执行
网友评论