线程池的五种状态

这篇具有很好参考价值的文章主要介绍了线程池的五种状态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、RUNNING

  • 状态说明:线程池处于RUNNING状态时,能够接收新任务以及对已添加的任务进行处理。
  • 状态切换:线程池的初始状态为RUNNING。换句话说线程池一旦被创建,就处于RUNNING状态,且线程池中的任务数为0
private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));

2、SHUTDOWN

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

3、STOP

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

4、TIDYING

  • 状态说明:当所有的任务已终止,ctl记录的任务数为0,线程池的状态会变为TIDYING状态;当线程池的状态变为TIDYING状态时,会调用钩子函数terminated(),该方法在ThreadPoolExecutor中是空的,若用户想在线程池变为TIDYING时进行相应的处理,就需要重载terminated()函数实现
  • 状态切换:当线程池状态为SHUTDOWN时,阻塞队列为空并且线程池中执行的任务也为空时,就会由SHUTDOWN->TIDYING
    当线程池为STOP时,线程池中执行的任务为空时,就会又STOP->TIDYING

5、TERMINATED文章来源地址https://www.toymoban.com/news/detail-407753.html

  • 状态说明:线程池彻底终止,就会变成TERMINATED状态
  • 状态切换:线程池处于TIDYING状态时,调用terminated()就会由TIDYING->TERMINATED

到了这里,关于线程池的五种状态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux的五种IO模型

    众所周知,出于对 OS 安全性的考虑,用户进程是不能直接操作 I/O 设备的。必须通过系统调用请求操作系统内核来协助完成 I/O 动作。 下图展示了 Linux I/O 的过程。 操作系统内核收到用户进程发起的请求后,从 I/O 设备读取数据到 kernel buffer 中,再将 buffer 中的数据拷贝到用户

    2024年02月04日
    浏览(40)
  • redis的五种数据类型

    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。以下是这五种数据类型的简介: string(字符串)类型是Redis最基本的数据类型,一个键最大能存储512MB,它支持二进制数据,即可以包含任何数据,比如jpg图片或

    2024年02月05日
    浏览(55)
  • MyBatis的五种批量插入

    一.直接循环插入 最终耗时:14s多 二.关闭MySql自动提交,手动进行循环插入提交 平均:0.12s 第三种:用List集合的方式插入数据库(推荐) 第四种: MyBatis-Plus提供的SaveBatch方法 直接报错: 看报错信息: 长串:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw excep

    2024年03月15日
    浏览(47)
  • PHP的五种运行方式

    PHP的五种运行方式: 1、命令行方式:通过在 命令行终端中输入 php 命令 ,可以执行PHP脚本文件。这种方式常用于执行独立的PHP脚本,比如执行一些批处理任务、定时任务等。 优点:灵活方便,可用于执行独立的PHP脚本,适合批处理任务和定时任务。 缺点:需要手动在命令

    2024年02月05日
    浏览(57)
  • Redis的五种基本数据类型

    简介:String 是 Redis 最基础的数据结构类型,它是二进制安全的,可以存储图片 或者序列化的对象,值最大存储为 512M 简单使用举例: set key value、get key等 应用场景:共享 session、分布式锁,计数器、限流。 内部编码有 3 种,int(8字节长整型)/embstr(小于等于 39字节字符串)

    2024年04月12日
    浏览(43)
  • RabbitMQ的五种常见消费模型

    RabbitMQ是一个流行的消息队列中间件,它确保了不同应用程序之间的可靠消息传递。由于其高性能、轻量级和灵活性,RabbitMQ在许多应用程序中被广泛使用,例如 异步任务处理、负载均衡、事件通知 等。在RabbitMQ中,消息的生产和消费是通过一系列的消费模型来管理的。每个

    2024年02月08日
    浏览(42)
  • 常见的五种设计模式

    https://www.runoob.com/design-pattern/factory-pattern.html **意图:**保证一个类仅有一个实例,并提供一个访问它的全局访问点。 **主要解决:**一个全局使用的类频繁地创建与销毁。 **何时使用:**当您想控制实例数目,节省系统资源的时候。 **如何解决:**判断系统是否已经有这个单例

    2024年02月07日
    浏览(44)
  • Hive导入数据的五种方法

            在Hive中建表成功之后,就会在HDFS上创建一个与之对应的文件夹,且 文件夹名字就是表名 ; 文件夹父路径是由参数hive.metastore.warehouse.dir控制,默认值是/user/hive/warehouse; 也可以在建表的时候使用location语句指定任意路径。         不管路径在哪里,只有把数

    2024年01月18日
    浏览(38)
  • Linux清空日志的五种方法

    在Linux中,有多种方法可以清空日志文件。下面是五种常用的方法: 使用truncate命令: truncate命令可以将文件截断为指定大小或清空文件内容。 示例:清空名为logfile.log的日志文件 使用cat命令重定向: cat命令可以将标准输入重定向到文件,使用空内容覆盖文件内容。 示例:

    2024年02月11日
    浏览(40)
  • 微前端:qiankun的五种通信方式

    今天盘点一下 qiankun 父子应用的通信方式都有哪些,我发现了 5 种。 1、localStorage/sessionStorage 2、通过路由参数共享 3、官方提供的 props 4、官方提供的 actions 5、使用vuex或redux管理状态,通过shared分享 接下来我们一个一个进行说明 有人说这个方案必须主应用和子应用是同一个

    2024年03月21日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包