目录
一、如何让线程中断
- 一、如何让线程中断
- 二、如何查看线程是否中断
- 三、线程中断案例
- 三、线程中断后依然在运行,没有终止的解决方式
- 调用java.lang包下的Thread类中interrupt方法
- 调用java.lang包下的Thread类中interrupted方法
说明:启动d1和d2两个线程,d2线程调用interrupt方法,查看d2线程是否中断
1、代码
package com.xz.thread.t1;
/**
* @description:
* @author: xz
*/
public class Demo2 extends Thread{
//构造方法
public Demo2(String name){
super(name);
}
@Override
public void run() {
while(true){
System.out.println(getName()+"——运行......");
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Demo2 d1 = new Demo2("线程1");
Demo2 d2 = new Demo2("线程2");
d1.start();
d2.start();
//中断d2线程
d2.interrupt();
}
}
2、输出如下:
3、结论
- 由上图可知d2线程中断后依然在运行,没有终止,运行后报java.lang.InterruptedException异常。
1、需要我们自己处理,在逻辑中需要用interrupted()方法查看当前线程是否中断。 2、代码
package com.xz.thread.t1;
/**
* @description:
* @author: xz
*/
public class Demo2 extends Thread{
//构造方法
public Demo2(String name){
super(name);
}
@Override
public void run() {
while(!interrupted()){//如果不中断则运行,否则运行终止。
System.out.println(getName()+"——运行......");
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
Demo2 d1 = new Demo2("线程1");
Demo2 d2 = new Demo2("线程2");
d1.start();
d2.start();
//中断d2线程
d2.interrupt();
}
}
3、输出截图如下图:
4、结论
- 由上图可知d2线程中断后,只有d1线程在运行。说明d2线程已中断。