示例一 :
public class Test01 extends Thread {
@Override
public void run() {
while (true) {
}
}
public static void main(String[] args) {
Test01 t = new Test01();
t.start();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(">>>>>>>>>>>>>>>>>开始中断子线程<<<<<<<<<<<<<<<<<");
//中断,阻塞或者正在运行的线程
t.interrupt();
System.out.println("线程已中断");
}
}
通过运行这个线程我们发现,当我们调用了interrupt()这个方法后,线程依旧没有停止…
原因:当我们调用interrupt()这个方法的时候底层会调用一个变量.isInterrupted,
这句话的意思就是当我们调用interrupt()方法后,它会将false变为true.当状态变为true之后,就代表着线程是停掉的.
isInterrupt()的使用方法如下:
public class Test01 extends Thread {
@Override
public void run() {
while (true) {
if (this.isInterrupted()== true) {
break;
}
}
}
public static void main(String[] args) {
Test01 t = new Test01();
t.start();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(">>>>>>>>>>>>>>>>>开始中断子线程<<<<<<<<<<<<<<<<<");
//中断,阻塞或者正在运行的线程
t.interrupt();
System.out.println("线程已中断");
}
}
只需要在代码中判断线程是否已经中断,当为true的时候,就代表线程已经停掉了…