Java线程池--线程池的五种状态
线程池的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线程池--线程池的五种状态相关推荐
- Java并发编程一线程池的五种状态
推荐:Java并发编程汇总 Java并发编程一线程池的五种状态 原文地址 Java多线程线程池(4)–线程池的五种状态 正文 线程池的5种状态:Running.ShutDown.Stop.Tidyin ...
- 线程及线程池的五种状态
线程的5种状态 线程可以有如下5种状态:New .Runnable .Running .Blocked .Dead 状态之间的转换如图: 1.New (新创建) 当用new操作符创建一个线程时,如ne ...
- 线程池的五种状态及创建线程池的几种方式
上篇<Java线程的6种状态详解及创建线程的4种方式> 前言:我们都知道,线程是稀有资源,系统频繁创建会很大程度上影响服务器的使用效率,如果不加以限制,很容易就会把服务器资源耗尽.所以,我 ...
- 操作系统中进程的五种状态与JAVA中线程的六种状态
操作系统中的五种状态 新建:创建新的进程 就绪:进程已经获得除CPU时间片以外的任何资源,一旦获得cpu时间片就能立马执行. 执行:处于就绪队列中的进程获得了时间片运行进程. 阻塞:进程时间片用完进入 ...
- 线程的五种状态及状态的切换
线程状态示意图 首先看下这张图,这张图标注了线程的五种状态,以及进程间的切换. 简述线程状态 新建状态 新建状态:新建了一个线程对象,该对象就处于新建状态. 就绪状态 就绪状态:线程对象创建后,其他线 ...
- 线程五种状态(新建、就绪、运行、阻塞、死亡)
线程的5种状态: 每个 Java 程序都有一个缺省的主线程,对于 Java 应用程序,主线程是 main()方法执行的线索: 对于 Applet 程序,主线程是指挥浏览器加载并执行 Java Appl ...
- 线程的生命周期及五种基本状态介绍
一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌 ...
- 一张图看明白Git的四个区五种状态
五种状态间的顺序操作 四个区 工作区(Working Area) 暂存区(Stage) 本地仓库(Local Repository) 远程仓库(Remote Repository) 五种状态 未修改( ...
- ajax 五种状态,ajax的五种状态
ajax的五种状态(readyState ) 0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接 ...
- readyState的五种状态详解【转】
在<Pragmatic Ajax A Web 2.0 Primer >中偶然看到对readyStae状态的介绍,感觉这个介绍很实在,摘译如下: 0: (Uninitialized) the ...
最新文章
- 2020年五大云计算预测
- 2013年第10周三低潮
- Java:使用synchronized和Lock对象获取对象锁
- OpenFire、Spark、Smack介绍
- add-apt-repository:找不到命令_嵌入式开发之交叉编译程序万能命令_以freetype为例...
- 企业如何杜绝云端数据泄密?
- lintcode循环数组之连续子数组求和
- 计算机常发故障英语,vipkid英语常见问题解决办法
- 如何使用python装饰器_Python学习之如何使用装饰器 @decorator
- 推荐一款ORM工具 FOR ADOBE AIR
- Java并发编程的艺术笔记(四)——ThreadLocal的使用
- css样式,层叠顺序属性z-index
- 用计算机弹出记事本,为何电脑开机会弹出desktop的记事本出来的
- 2022 Android 进阶学习RoadMap
- android listview viewstub,Android中使用ViewStub提高布局性能
- 定时器控制一个ADC实现双通道采样(TIM+ADC+DMA)
- 北京邮电大学计算机网络教材,北京邮电大学《计算机网络》4.pdf
- mac 配置host
- MongoDB Ubuntu安装 APP 支付宝微信支付
- 普通话测试第四题评分标准_普通话测试第四题评分细则