如何才能称为优雅
所谓优雅就是在线程在运行的时候不能强制中断(所以stop()方法就不优雅),
而是在线程处于阻塞状态(比如:Object.wait, Thread.join和Thread.sleep),
才去停止线程!
方法介绍
thread.interrupt(); 功能:
1.修改线程中断状态 Thread.interrupted()可以检测到线程中断状态,并且停止线程
2.调用此方法后,线程中出现阻塞,会抛出 java.lang.InterruptedException: sleep interrupted 异常,从而中断线程。
代码示例
public static void test2() throws InterruptedException {
Runnable runnable = new Runnable() {
@SneakyThrows
@Override
public void run() {
while (true) {
System.out.println(Thread.currentThread().getName());
Thread.sleep(1);
}
}
};
Thread thread = new Thread(runnable);
thread.start();
Thread.sleep(3000); //让线程先执行3秒
thread.interrupt();
}
运行结果
可以看出在thread.interrupt()方法执行后,线程中出现了阻塞就会抛出异常停止线程!