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

【Java】线程池的实现原理是怎样的?CPU密集型任务与IO密集型任务的区别?

一、CPU密集型与IO密集型任务

1.CPU密集型任务(CPU-bound)

定义:需要大量CPU计算资源,大部分时间都在进行运算的任务。
这类任务的特点是计算量大,CPU占用率高。

特点:

  • 主要消耗CPU资源
  • 执行速度取决于CPU的计算能力
  • 通常涉及复杂的数学运算、算法处理等。

常见例子:

  • 视频编码/解码
  • 3D图形渲染
  • 复杂的数学计算(如密码学运算、科学计算)
  • 机器学习模型训练

优化策略:

  • 使用更高效的算法
  • 增加CPU的核心数(多进程/多线程)
  • 使用向量化指令(如SIMD)
  • 减少不必要的计算

2.IO密集型任务(I/O bound)

定义:需要大量输入/输出操作,大部分时间在等待IO操作完成的任务。这类任务的特点是CPU利用率不高,大部分时间在等待。

特点:

  • 主要消耗IO资源(磁盘、网络)
  • 执行速度取决于IO设备的速度
  • CPU经常处于等待状态

常见例子:

  • 文件读写操作
  • 数据库查询
  • 网络请求(如 HTTP API调用)
  • 消息队列处理
  • 日志记录

优化策略:

  • 使用异步IO
  • 增加并发处理能力
  • 使用缓存减少IO操作
  • 优化IO设备性能(如SSD代替HDD)

请添加图片描述

二、线程池实现原理

1.线程池核心组件

Java中的线程池主要通过ThreadPoolExecutor类实现,其核心组件包括:
1.工作队列(BlockingQueue):用于存放待执行的任务
2.线程集合(HashSet<Worker>):实际执行任务的线程
3.线程工厂(ThreadFactory):用于创建新线程
4.拒绝策略(RejectedExecutionHandler):
当任务无法处理时的策略。

2.线程池工作流程

1.提交任务到线程池
2.如果当前线程数<corePoolSize,创建新线程执行任务
3.如果线程数>=corePoolSize,将任务放入工作队列
4.如果队列已满且线程数<maximumPoolSize,创建新线程执行任务,
5.如果队列已满且线程数>=maximumPoolSize,执行拒绝策略。

3.线程池状态管理

线程池通过AtomicInteger变量同时维护两个信息:

  • 运行状态(RUNNING, SHUTDOWN, STOP, TIDYING, TERMINATED)
  • 有效线程数(workerCount)

4.关键参数(3大核心配置)

  • corePoolSize核心线程数,线程池维护的最小活跃线程数。
  • maximumPoolSize最大线程数,线程池可创建的线程上限。
  • keepAliveTime: 非核心线程的空闲存活时间,超时则销毁(核心线程默认不销毁)。
http://www.xdnf.cn/news/9973.html

相关文章:

  • Java基础面试题--jdk和jre的区别
  • openbmc kvm vnc client connection
  • 四、若依从数据库
  • 【JavaWeb】基本概念、web服务器、Tomcat、HTTP协议
  • 数据结构数组总结
  • 大模型调用数据库表实践:基于自然语言的SQL生成与数据查询系统
  • 石油炼化厂融合定位系统人员管控解决方案
  • 阿里云服务器ECS详细购买流程【新手购买手册】
  • 小白的进阶之路系列之六----人工智能从初步到精通pytorch数据集与数据加载器
  • 学习STC51单片机20(芯片为STC89C52RCRC)
  • Webug4.0靶场通关笔记03- 第3关SQL注入之时间盲注(手注法+脚本法 两种方法)
  • 字体查看器
  • C学习-头文件
  • iVX 如何用 VL 中间语言构建程范式闭环?
  • [SC]SystemC语法小结(一)
  • Linux部署python项目为服务,开启自启动
  • 上传图片转成3D VR效果 / 用photo-sphere-viewer实现图片VR效果 / VR效果在项目中落地实践
  • WebBuilder赋能中山欣锠鞋业数字化转型实践
  • Web 系统验证码与登录安全防护全攻略(附实现方案)
  • The CTeX fontset “fandol“ is unavailable in the current mode.
  • 复合机器人:纠偏算法如何重塑工业精度与效率?
  • AET3156AP电源方案 禾纳代理商
  • 1.什么是node.js、npm、vue
  • vue3 各种数据处理
  • Spring 核心知识点补充
  • 文档处理的相关工具
  • MMR搜索和LangChain整合Milvus实战
  • 小白的进阶之路系列之七----人工智能从初步到精通pytorch自动微分优化以及载入和保存模型
  • 高精度、高效率:正面吊箱号识别系统如何实现精准识别
  • 多模态大模型:开启智能决策的新时代