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

线程池的类型

① FixedThreadPool

线程数固定的线程池
线程池参数:

  • 核心线程数和最大线程数一致
  • 非核心线程线程空闲存活时间,即keepA1iveTime为0
  • 阳塞队列为无界队列 LinkedBlockingQueue

工作机制:

  1. 提交线程任务
  2. 如果线程数少于核心线程,创建核心线程执行任务
  3. 如果线程数等于核心线程,把任务添加到 LinkedBlockingQueue 阻塞队列
  4. 如果线程执行完任务,去阻塞队列取任务,继续执行

使用场景:适用于处理 CPU 密集型的任务,确保 CPU 在长期被工作线程使用的情况下,尽可能的少的分配线程,即适用执行长期的任务。

 

② CachedThreadPool

可缓存线程池,线程数根据任务动态调整的线程池

线程池参数:

  1. 核心线程数为 8
  2. 最大线程数为 Integer.MAX_VALUE
  3. 工作队列是 synchronousQueue 同步队列
  4. 非核心线程空闲存活时间为 60

工作机制:

  1. 提交线程任务
  2. 因为核心线程数为0,所以任务直接加到 synchronousQueue 工作队列
  3. 判断是否有空闲线程,如果有,就去取出任务执行
  4. 如果没有空闲线程,就新建一个线程执行
  5. 执行完任务的线程,还可以存活 60 秒,如果在这期间,接到任务,可以继续存活下去;否则
  6. 被销毁。

使用场景:用于并发执行大量短期的小任务。

 

③ SingleThreadExecutor

单线程化的线程池

线程池参数

  • 核心线程数为 1
  • 最大线程数也为 1
  • 阳塞队列是 LinkedBlockingQueue
  • 非核心线程空闲存活时间为 

使用场景:适用于串行执行任务的场景,将任务按顺序执行。


④ ScheduledThreadPoo

能实现定时、周期性任务的线程池

线程池参数:

  • 最大线程数为 Integer.MAX VALUE
  • 阻塞队列是 DelayedWorkQueue
  • keepAliveTime为0

使用场景:周期性执行任务,并且需要限制线程数量的需求场景。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 掌握顶会流量密码!“Mamba+CNN”双热点组合!轻松找到创新点!
  • EP21 Promise封装request请求
  • Java企业面试题3
  • 数据结构—单链表
  • 让医院更智慧,让决策更容易
  • LeetCode_sql_day30(1264.页面推荐)
  • ROS学习笔记13——rosbag功能包的简单使用
  • 【自动化测试】常见的自动化遍历工具以及如何选择合适的自动化遍历工具
  • 1、vectorCast单元测试常用操作
  • 关于 OceanBase 4.x 中被truncate的 table 不再支持进回收站的原因
  • CSS——网格布局(display: grid)之上篇
  • 链路聚合(Link Aggregation)
  • vue 入门一
  • 【UE5】将2D切片图渲染为体积纹理,最终实现使用RT实时绘制体积纹理【第二篇-着色器制作】
  • JS实现树形结构数据中特定节点及其子节点显示属性设置的技巧(可用于树形节点过滤筛选)
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • C++11: atomic 头文件
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java|序列化异常StreamCorruptedException的解决方法
  • jquery ajax学习笔记
  • php ci框架整合银盛支付
  • yii2权限控制rbac之rule详细讲解
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 简析gRPC client 连接管理
  • 离散点最小(凸)包围边界查找
  • 力扣(LeetCode)56
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端相关框架总和
  • 深度学习中的信息论知识详解
  • 微信开放平台全网发布【失败】的几点排查方法
  • 因为阿里,他们成了“杭漂”
  • 再谈express与koa的对比
  • - 转 Ext2.0 form使用实例
  • hi-nginx-1.3.4编译安装
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #java学习笔记(面向对象)----(未完结)
  • #mysql 8.0 踩坑日记
  • #WEB前端(HTML属性)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (007)XHTML文档之标题——h1~h6
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (pojstep1.3.1)1017(构造法模拟)
  • (二)原生js案例之数码时钟计时
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (回溯) LeetCode 131. 分割回文串
  • (十三)Flask之特殊装饰器详解
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)Windows2003安全设置/维护
  • .NET Framework .NET Core与 .NET 的区别
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...