线程池状态详解(5种状态图解)

线程池状态详解(5种状态图解)-mikechen

Java线程池有5种不同的状态,下面详解5种常见的线程池状态@mikechen

线程池状态主要分为5种,分别是:Running、ShutDown、Stop、Tidying、Terminated。

如下图所示:

线程池状态详解(5种状态图解)-mikechen

1.Running(运行中)

在这个状态下,线程池被创建并且处于活动状态。它可以接受任务并将其分配给线程来执行。

新任务会被添加到任务队列或直接交给空闲线程执行,线程池可以根据需要创建新线程来执行任务。

 

2.Shutting Down(正在关闭)

当线程池调用了 shutdown() 方法后,它会进入这个状态。在此状态下,线程池不再接受新的任务,但会继续执行已提交的任务。

正在关闭的线程池会等待已提交的任务完成。它不会中断正在执行的任务,除非任务超时或被取消。

 

3.Shut Down(已关闭)

在线程池调用了 shutdown() 方法后,并且所有已提交的任务都已完成,线程池会进入这个状态。

已关闭的线程池不再接受新任务,也不会执行已提交的任务。如果尝试提交新任务,将会抛出 RejectedExecutionException

 

4.Tidying(整理中)

在线程池从 “Stop” 状态切换到 “Tidying” 状态,它会尝试执行一些清理操作,包括中断被挂起的任务。

这个状态表示线程池正在进行一些清理操作以关闭线程池。

 

5.Terminated(已终止)

当线程池调用了 shutdown() 方法,并且所有已提交的任务都已完成(包括已取消的任务),线程池会进入已终止状态。

处于已终止状态的线程池不再接受新任务,也不会执行已提交的任务,线程池已彻底终止,无法重新启动。

线程池状态的变化通常是以下几个过程:

  • Running -> Shutdown -> Tidying -> Terminated: 正常的关闭流程,线程池从运行中逐渐过渡到终止状态。
  • Running -> Stop -> Tidying -> Terminated: 在线程池停止后,它会执行清理操作并终止。
  • Running -> Shutdown -> Terminated: 如果在线程池关闭后,没有等待执行的任务,直接进入终止状态。

以上就是5种线程池状态详解,更多线程池请查看:Java线程池(万字图文详解)

作者简介

陈睿|mikechen,10年+大厂架构经验,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

评论交流
    说说你的看法