当前位置: 首页 > article >正文

线程池的类型和状态

一、线程池的类型
1.通过Executors工具类创建的线程池对象
  • Executors.newFixedThreadPool(nThreads):固定线程数目的线程池;

  1. 核心线程数和最大线程数一致;
  2. 只要非核心线程空闲,则立刻被回收;
  3. 工作队列为无界队列。
  • Executors.newCachedThreadPool():可缓存线程,线程数根据任务动态调整的线程池;

  1. 核心线程数为0;
  2. 最大线程数为Integer.MAX_VALUE;
  3. 只要非核心线程空闲存活时间为60秒;
  4. 工作队列为同步队列。
  • Executors.newSingleThreadExecutor():单线程的线程池;

  1. 核心线程数为1;
  2. 最大线程数为1;
  3. 只要非核心线程空闲,则立刻被回收;
  4. 工作队列为无界队列。
  • Executors.newScheduledThreadPool(corePoolsize):能够实现定时、周期执行任务的线程池;

调用了ScheduledThreadPoolExecutor实现类的ScheduledThreadPoolExecutor方法实现

  1. 最大线程数为Integer.MAX_VALUE;
  2. 只要非核心线程空闲,则立刻被回收;
  3. 工作队列为DelayedWorkQueue。
2.常见的线程池实现类
  • ThreadPoolExecutor:标准线程池实现类;
  • ScheduledThreadPoolExecutor :执行定时任务或周期性任务的线程池实现类;
  • ForkJoinPool :用于任务分治的线程池实现类,它支持任务的分叉Fork和合并Join ,适合处理可以分解为多个子任务并行执行的计算密集型任务;
二、线程池的状态

线程池的状态分为:RUNNING、SHUTDOWN、STOP、TIDYING、TERMINATED

  • RUNNING(运行状态):线程池一旦被创建,就处于RUNNING状态。
    • 调用线程池的shutdown()方法,可以切换到SHUTDOWN状态;
    • 调用线程池的shutdownNow()方法,可以切换到STOP状态。
  • SHUTDOWN(关闭状态):该状态下的线程池不会接收新任务,但是会处理队列中的任务
    • 当队列中的任务为空时,并且线程池中执行的任务也为空时,线程池进入TIDYING状态。
  • STOP(停止状态):该状态下的线程池不会接收新任务,也不会处理队列中的任务,还会中断正在运行中的任务
    • 线程池中执行的任务也为空时,线程池进入TIDYING状态。
  • TIDYING(整理状态):该状态表明所有的任务都已经终止,记录的任务数量为0
    • 当terminated()方法执行完毕,进入TERMINATED状态。
  • TERMINATED(终止状态):该状态表明线程池彻底关闭。

http://www.kler.cn/a/310879.html

相关文章:

  • 如何使用 Web Scraper API 高效采集 Facebook 用户帖子信息
  • MFC工控项目实例二十九主对话框调用子对话框设定参数值
  • 量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
  • qt QProcess详解
  • 计算机毕业设计Python+Neo4j知识图谱医疗问答系统 大模型 机器学习 深度学习 人工智能 大数据毕业设计 Python爬虫 Python毕业设计
  • Spark 的容错机制:保障数据处理的稳定性与高效性
  • sqli-labs靶场自动化利用工具——第11关
  • 【深度学习】(2)--PyTorch框架认识
  • 设计模式(Design Patterns)
  • springBoot整合mybatisplus
  • 学习风格的类型
  • 内核是如何接收网络包的
  • FLUX屠榜了小红书,平台这会也真假难辨
  • PMP 报考条件是有哪些?
  • 【mysql】mysql中窗口函数lag()用法
  • HarmonyOS开发实战( Beta5.0)蓝牙实现服务端和客户端通讯详解
  • 面向对象设计的五大原则(SOLID 原则)
  • Jsp学习笔记(详解)
  • 【2025】儿童疫苗接种预约小程序(源码+文档+解答)
  • python 实现collatz sequence考拉兹序列算法
  • 如何使用下拉字段创建WordPress表单(简单方法)
  • 1.熟悉接口测试(Postman工具)
  • JavaWeb笔记整理——Redis
  • 程序员装新机
  • 【架构设计】多级缓存:应用案例与问题解决策略
  • Linux入门学习:Linux权限理解