没有可以强制终止线程的方法,只有请求中断线程的方法(interrupt)。
当对线程使用interrupt方法时,将对线程发送一个中断的信号,每个线程都具有一个Boolean标识,标识当前的线程是否中断,所以每个线程都应该要持续进行检查。
while (!Thread.currentThread (). islnterrupted())
{
do something
}
当线程被阻塞时,无法检测中断的状态,导致产生 InterruptedException异常,不仅如此,线程的标识会被消去
public class Test implements Runnable{
public static void main(String[] args) {
Test t=new Test();
Thread thread=new Thread(t);
thread.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (!thread.isInterrupted()) {
thread.interrupt();
System.out.println(thread.isInterrupted());
}
}
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
在打印线程的状态时为false,线程是未被中断的,并且会报异常。