SHUTDOWN 和 STOP 均拒绝新任务,但 SHUTDOWN 继续执行队列中已有任务且不中断线程,STOP 则清空队列并尝试中断所有工作线程。

STOP 和 SHUTDOWN 状态都会拒绝新任务,但触发时机和配套行为完全不同。
SHUTDOWN:拒绝新任务 + 继续处理队列中已提交的任务
进入 SHUTDOWN 后,线程池立即停止接收新提交的任务(后续 submit/execute 会触发拒绝策略),但不会丢弃或中断任何已有工作:
- 正在运行的任务继续执行,不受干扰
- 任务队列中已入队、尚未开始执行的 Runnable 仍会被工作线程逐个取出并执行
- 不调用 Thread.interrupt(),所有线程保持自然运行状态
STOP:拒绝新任务 + 停止处理队列 + 尝试中断运行中任务
进入 STOP 后,不仅拒绝新任务,还彻底切断任务流转链路:
- 不再从任务队列中取任务,队列被直接清空(未执行任务以 List
形式返回) - 对所有工作线程(包括正执行任务的、空闲的)调用 interrupt()
- 是否真正终止运行中任务,取决于任务自身是否响应中断(如检查 isInterrupted() 或捕获 InterruptedException)
关键区别不在“拒否”,而在“后续动作”
两者都拒绝新任务,这是共同前提。差异本质在于:SHUTDOWN 是“收尾式关闭”,保障已接纳任务全部完成;STOP 是“截断式关闭”,目标是尽快释放资源,接受任务丢失或中断失败的风险。
立即学习“Java免费学习笔记(深入)”;


















