当前线程的中断标识为true,是不是线程就立刻停止?
答案是不立刻停止,具体来说,当对一个线程,调用interrupt时:
如果线程处于正常活动状态,那么会将该线程的中断标志设置为true,仅此而已,被设置中断标志的线程将继续正常运行,不受影响,所以interrupt()并不能真正的中断线程,需要被调用的线程自己进行配合才行,对于不活动的线程没有任何影响。
如果线程处于阻塞状态(例如sleep,wait,join状态等),在别的线程中调用当前线程对象的interrupt方法,那么线程将立即退出被阻塞状态(interrupt状态也将被清除),并抛出一个InterruptedException异常。
第一种情况正常活动状态演示
- package com.nanjing.gulimall.zhouyimo.test;
-
- import java.util.concurrent.TimeUnit;
-
- /**
- * @author zhou
- * @version 1.0
- * @date 2023/10/15 5:43 下午
- * 执行interrupt方法将t1标志位设置为true后,t1没有中断,仍然完成了任务后再结束
- * 在2000毫秒后,t1已经结束称为不活动线程,设置状态为没有任何影响
- */
- public class InterruptDemo