当前位置: 首页 > 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/news/310879.html

相关文章:

  • 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权限理解
  • PyQGIS开发 1 环境配置
  • web渗透—RCE
  • 单片机中为什么要使用5v转3.3v,不直接使用3.3V电压
  • 【Bug解决】Nacos启动成功,但却无法访问(提示:无法访问此网站,192.168.10.88的响应时间过长)
  • 【算法题】46. 全排列-力扣(LeetCode)
  • Flink 实现无界流
  • 十七,Spring Boot 整合 MyBatis 的详细步骤(两种方式)
  • 四、JVM原理-4.2、内存管理
  • 计算机视觉(CV)技术是指计算机系统通过模拟人类视觉系统来识别、理解和解释图像和视频的能力。它可以在各种领域中发挥巨大作用,但也面临一些挑战。
  • tasklist命令的应用实例