线程池的5种状态:Running、ShutDown、Stop、Tidying、Terminated。

线程池各个状态切换框架图:

1、RUNNING

(1) 状态说明:线程池处在RUNNING状态时,能够接收新任务,以及对已添加的任务进行处理。 
(02) 状态切换:线程池的初始化状态是RUNNING。换句话说,线程池被一旦被创建,就处于RUNNING状态,并且线程池中的任务数为0!

private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));

2、 SHUTDOWN

(1) 状态说明:线程池处在SHUTDOWN状态时,不接收新任务,但能处理已添加的任务。 
(2) 状态切换:调用线程池的shutdown()接口时,线程池由RUNNING -> SHUTDOWN。

3、STOP

(1) 状态说明:线程池处在STOP状态时,不接收新任务,不处理已添加的任务,并且会中断正在处理的任务。 
(2) 状态切换:调用线程池的shutdownNow()接口时,线程池由(RUNNING or SHUTDOWN ) -> STOP。

4、TIDYING

(1) 状态说明:当所有的任务已终止,ctl记录的”任务数量”为0,线程池会变为TIDYING状态。当线程池变为TIDYING状态时,会执行钩子函数terminated()。terminated()在ThreadPoolExecutor类中是空的,若用户想在线程池变为TIDYING时,进行相应的处理;可以通过重载terminated()函数来实现。 
(2) 状态切换:当线程池在SHUTDOWN状态下,阻塞队列为空并且线程池中执行的任务也为空时,就会由 SHUTDOWN -> TIDYING。 
当线程池在STOP状态下,线程池中执行的任务为空时,就会由STOP -> TIDYING。

5、 TERMINATED

(1) 状态说明:线程池彻底终止,就变成TERMINATED状态。 
(2) 状态切换:线程池处在TIDYING状态时,执行完terminated()之后,就会由 TIDYING -> TERMINATED。

文章只是作为自己的学习笔记,借鉴了网上的许多案例,如果觉得阔以的话,希望多交流,在此谢过…
--------------------- 
作者:一只逗比的程序猿 
原文:https://blog.csdn.net/l_kanglin/article/details/57411851

Java线程池--线程池的五种状态相关推荐

  1. Java并发编程一线程池的五种状态

    推荐:Java并发编程汇总 Java并发编程一线程池的五种状态 原文地址 Java多线程线程池(4)–线程池的五种状态 正文 线程池的5种状态:Running.ShutDown.Stop.Tidyin ...

  2. 线程及线程池的五种状态

    线程的5种状态 线程可以有如下5种状态:New .Runnable .Running .Blocked .Dead 状态之间的转换如图: 1.New (新创建) 当用new操作符创建一个线程时,如ne ...

  3. 线程池的五种状态及创建线程池的几种方式

    上篇<Java线程的6种状态详解及创建线程的4种方式> 前言:我们都知道,线程是稀有资源,系统频繁创建会很大程度上影响服务器的使用效率,如果不加以限制,很容易就会把服务器资源耗尽.所以,我 ...

  4. 操作系统中进程的五种状态与JAVA中线程的六种状态

    操作系统中的五种状态 新建:创建新的进程 就绪:进程已经获得除CPU时间片以外的任何资源,一旦获得cpu时间片就能立马执行. 执行:处于就绪队列中的进程获得了时间片运行进程. 阻塞:进程时间片用完进入 ...

  5. 线程的五种状态及状态的切换

    线程状态示意图 首先看下这张图,这张图标注了线程的五种状态,以及进程间的切换. 简述线程状态 新建状态 新建状态:新建了一个线程对象,该对象就处于新建状态. 就绪状态 就绪状态:线程对象创建后,其他线 ...

  6. 线程五种状态(新建、就绪、运行、阻塞、死亡)

    线程的5种状态: 每个 Java 程序都有一个缺省的主线程,对于 Java 应用程序,主线程是 main()方法执行的线索: 对于 Applet 程序,主线程是指挥浏览器加载并执行 Java Appl ...

  7. 线程的生命周期及五种基本状态介绍

    一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌 ...

  8. 一张图看明白Git的四个区五种状态

    五种状态间的顺序操作 四个区 工作区(Working Area) 暂存区(Stage) 本地仓库(Local Repository) 远程仓库(Remote Repository) 五种状态 未修改( ...

  9. ajax 五种状态,ajax的五种状态

    ajax的五种状态(readyState ) 0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接 ...

  10. readyState的五种状态详解【转】

    在<Pragmatic Ajax A Web 2.0 Primer >中偶然看到对readyStae状态的介绍,感觉这个介绍很实在,摘译如下: 0: (Uninitialized) the ...

最新文章

  1. 2020年五大云计算预测
  2. 2013年第10周三低潮
  3. Java:使用synchronized和Lock对象获取对象锁
  4. OpenFire、Spark、Smack介绍
  5. add-apt-repository:找不到命令_嵌入式开发之交叉编译程序万能命令_以freetype为例...
  6. 企业如何杜绝云端数据泄密?
  7. lintcode循环数组之连续子数组求和
  8. 计算机常发故障英语,vipkid英语常见问题解决办法
  9. 如何使用python装饰器_Python学习之如何使用装饰器 @decorator
  10. 推荐一款ORM工具 FOR ADOBE AIR
  11. Java并发编程的艺术笔记(四)——ThreadLocal的使用
  12. css样式,层叠顺序属性z-index
  13. 用计算机弹出记事本,为何电脑开机会弹出desktop的记事本出来的
  14. 2022 Android 进阶学习RoadMap
  15. android listview viewstub,Android中使用ViewStub提高布局性能
  16. 定时器控制一个ADC实现双通道采样(TIM+ADC+DMA)
  17. 北京邮电大学计算机网络教材,北京邮电大学《计算机网络》4.pdf
  18. mac 配置host
  19. MongoDB Ubuntu安装 APP 支付宝微信支付
  20. 普通话测试第四题评分标准_普通话测试第四题评分细则

热门文章

  1. img标签的水平居中、靠左、靠右
  2. 自定义 border 设置 dashed 时的虚线间距
  3. 死锁产生的原因和解决
  4. 解决QT中使用不了搜狗中文输入法的问题
  5. 安装Deepin V20.2双系统后优化的一些事项
  6. 有关SGI STL的alloc
  7. 大前端进击之路(一):函数式编程
  8. Django-urls
  9. php 和 java 拿督,小编来科普 拿督威拉在马来西亚级别到底有多高
  10. 使用pytorch自己构建网络模型实战