【JUC进阶】如何合理设置线程池核心线程数?
创始人
2025-05-30 09:20:12
0

文章目录

  • 1. 前言
  • 2. CPU 密集型
  • 3. IO密集型
  • 4. 实际情况

1. 前言

线程池(Thread Pool)是一种基于池化思想管理线程的工具,线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。

因此,线程池的参数的合理化就会显得很重要了。

如果核心线程数设置偏小,那么会大量抛出RejectedExecutionException,触发接口降级条件。

img

如果核心线程设置偏大,可能会导致核心线程并没有重复利用,但是程序还需要维护这些线程,因此导致了资源的浪费。

如果线程池队列长度设置过长、corePoolSize设置过小导致任务执行速度低

img

这时候就要根据程序是IO密集型还是CPU密集型来决定核心线程数了。


2. CPU 密集型

CPU密集型,是指CPU使用频率比较高,也就是CPU经常计算一些复杂的运算、逻辑处理等。

在CPU密集型的情况下,CPU负载比较高,而IO在很短时间就完了。

就比如一个计算圆周率至小数点一千位以下的程序,在执行的过程当中绝大部份时间用在三角函数和开根号的计算,这种就是典型的CPU密集型。

这时候,线程数一般只需要设置为CPU核心数的线程个数就可以了。


3. IO密集型

IO密集型,指的是CPU使用率比较低,程序大部分时间都是用在等待IO的读或写,导致线程空余时间很多。

这种情况下,核心线程数量一般设置为CPU核心数的两倍。

当线程进行 I/O 操作 CPU 空闲时,启用其他线程继续使用 CPU,以提高 CPU 的使用率。

  1. 线程等待时间所占比例越高,需要越多线程,启用其他线程继续使用CPU,以此提高CPU的利用率;
  2. 线程 CPU 时间所占比例越高,需要越少的线程,这一类型在开发中主要出现在一些计算业务频繁的逻辑中。

4. 实际情况

但是实际情况是根据并发任务的执行情况和任务类型相关,IO密集型和CPU密集型的任务运行起来的情况差异非常大,但这种占比是较难合理预估的,这导致很难有一个简单有效的通用公式帮我们直接计算出结果。

对于这种情况我们可以参考美团技术团队线程池参数动态化来实现。

有兴趣的同学可以阅读这篇文章——Java线程池实现原理及其在美团业务中的实践 - 美团技术团队 (meituan.com)


相关内容

热门资讯

物业年度工作计划 【推荐】物业年度工作计划范文合集10篇  时间过得太快,让人猝不及防,我们又将接触新的知识,学习新的...
我终于搞懂了浏览器缓存机制 一、什么是缓存 网上讲了一大堆官方的说辞,看绕了反而,我这里通俗的理解就...
最新九年级化学上学期教学工作... 最新九年级化学上学期教学工作计划  一、学生基本情况分析:  化学是一门九年级刚开设的新课程,与生活...
部门个人工作计划 【热门】部门个人工作计划3篇  人生天地之间,若白驹过隙,忽然而已,我们的工作又将在忙碌中充实着,在...
MySQL与分布式:主从复制 文章目录MySQL与分布式一、Linux下载 MySQL二、主从复制①修改配置文件②配置主机③配置从...
webpack Tree-sh... Tree-shaking 原理:Tree Shaking 就是一种通过消除文件中未使用...
VBA提高篇_ 31 VBA调... 文章目录1.VBScript处理正则的对象:2.创建对象: CreateObject("")3. 查...
中班上学期工作计划 中班上学期工作计划(15篇)  人生天地之间,若白驹过隙,忽然而已,我们又将续写新的诗篇,展开新的旅...
小学学校校本教研工作计划 小学学校校本教研工作计划汇总六篇  日子在弹指一挥间就毫无声息的流逝,我们的工作又将在忙碌中充实着,...
四年级班级工作计划 四年级班级工作计划(精选9篇)  光阴迅速,一眨眼就过去了,我们又将接触新的知识,学习新的技能,积累...
初识C语言(3) 操作符,关键字(typedef、static),指针
AIDL 详细介绍及使用 一、AIDL是什么?  AIDL 意思即 Android Interface Defi...
高中生暑假物理学习计划 高中生暑假物理学习计划  时间过得太快,让人猝不及防,我们又将接触新的学习内容,学习新的技能,积累新...
校本教研工作计划 校本教研工作计划汇编8篇  光阴的迅速,一眨眼就过去了,又解锁了新的工作,现在这个时候,你会有怎样的...
教研室工作计划 【精华】教研室工作计划范文七篇  时间过得真快,总在不经意间流逝,迎接我们的将是新的生活,新的挑战,...
销售工作计划 【必备】销售工作计划模板(精选10篇)  时间的脚步是无声的,它在不经意间流逝,迎接我们的将是新的生...
es6和commonJs的区别 一、export语句的区别: ES6 和 CommonJS 是两种不同的 JavaSc...
小学第六册品德与社会教学工作... 小学第六册品德与社会教学工作计划  时间是箭,去来迅疾,我们又将迎来新一轮的努力,让我们一起来学习写...
【蓝桥杯专题】枚举、模拟与排序... 菜狗现在才开始备战蓝桥杯QAQ 文章目录【蓝桥杯专题】 (C++ |...
锚点定位方案 一 背景知识: 1.1 #号的作用 #代表网页中的一个位置。其右面的字符,就是该位置的...