在Thread类提供的线程操作方法中很多都会抛出InterruptedException中断异常,所以线程在执行和过程中也可以被另外一个线程中断执行,线程中断的操作方法
范例:线程中断操作
public class ThreadDemo316 {
public static void main(String[] args) throws InterruptedException {
Thread thread=new Thread(()-> {
System.out.println("【before】准备睡觉十秒钟的时间");
try {
Thread.sleep(10000); //预计准备休眠10秒
System.out.println("【finish】睡醒了,开始工作和学习生活");
} catch (InterruptedException e) {
System.out.println("【exception】睡觉被打扰了,坏脾气来了");
}
});
thread.start(); //线程启动
Thread.sleep(1000); //保证子线程先运行1秒
if (!thread.isInterrupted()) { //线程未中断
System.out.println("【interrupt】敲锣打鼓欢天喜地路过你睡觉的地方");
thread.interrupt(); //中断执行
}
}
}
执行结果
【before】准备睡觉十秒钟的时间
(有休眠)
【interrupt】敲锣打鼓欢天喜地路过你睡觉的地方
【exception】睡觉被打扰了,坏脾气来了
本程序实现了线程执行的中断操作,可以发现线程的中断是被动完成的,每当被中断执行后就会产生InterruptedException异常。