线程池参数配置

上次面试被人问到,如果是IO 密集型的任务,该如何配置合适的线程数,当初我说要按照IO具体的请求毫秒时间,来配置具体的线程数。

java 复制代码
Nthreads=Ncpu*(1+w/c)
公式中 W/C 为系统 阻塞率  w:等待时间 c:计算时间

一般情况下,如果存在IO,那么肯定w/c>1(阻塞耗时一般都是计算耗时的很多倍),但是需要考虑系统内存有限(每开启一个线程都需要内存空间),这里需要上服务器测试具体多少个线程数适合(CPU占比、线程数、总耗时、内存消耗)。如果不想去测试,保守点取1即,Nthreads=Ncpu*(1+1)=2Ncpu。这样设置一般都OK

至于CPU 密集型 一般

java 复制代码
Nthreads=Ncpu+1 
w/c  =0 
理解也是正确的,+1 主要是防止因为系统上下文切换,让系统资源跑满!

面试官还问我,如果主要两种任务 一个耗时500ms, 另一种耗时200ms ,如何设置 线程数。

我当时 觉得应该用两个线程池 ,分别根据 W/C 设置最优参数。

如果用一个线程池 ,那就要根据两种任务的数量比重,统计出 耗时中位数?然后再根据 W/C 设置线程数。

相关推荐
说给风听.1 分钟前
Maven 配置实战:从环境搭建到 Idea 关联(超详细)
java·maven·intellij-idea
果粒蹬i2 分钟前
从割裂到融合:MATLAB与Python混合编程实战指南
开发语言·汇编·python·matlab
Hx_Ma163 分钟前
SSM 项目中 mq是什么
java
生骨大头菜3 分钟前
对接金蝶上传附件接口
java·开发语言
skywalker_114 分钟前
File:路径详述
java·开发语言·file
2301_790300964 分钟前
嵌入式GPU编程
开发语言·c++·算法
AC赳赳老秦6 分钟前
R语言数据分析:DeepSeek辅助生成统计建模代码与可视化图表
开发语言·人工智能·jmeter·数据挖掘·数据分析·r语言·deepseek
白日梦想家6819 分钟前
深入浅出 JavaScript 定时器:从基础用法到避坑指南
开发语言·javascript·ecmascript
老友@9 分钟前
JMeter 在 Linux 环境下进行生产级性能压测的完整实战指南
java·linux·jmeter·性能优化·系统架构·压测·性能瓶颈
阿湯哥11 分钟前
Reactor响应式编程中Sinks.Many
java·reactor