如何选择线程数量

简介: 本文目录CPU密集型IO密集型选择线程数量区别总结

CPU密集型


CPU密集型 又叫做计算密集型,系统运作大部分是CPU Loading,CPU密集就是该任务需要大量的运算,而没有阻塞,CPU一直全速运行


IO密集型


IO密集型指的是在系统运行过程中,大部分的状况是CPU在等I/O的读/写操作,此时CPU Loading并不高。因为认为本身需要大量I/O操作


选择线程数量

公式:最佳线程数目=(线程等待时间与线程CPU时间之比+1)CPU数目
对于 CPU密集型 ,线程等待时间/线程CPU时间 接近于0,所以设置线程数为CPU的数目
线程数目不易太大,如果线程数太大就会造成线程切换,降低效率

在实际情况中一般CPU密集型线程数量设置为CPU数+1*

在《Java并发编程实践》中 计算密集型的线程恰好在某时因为发生一个页错误或者因其他原因而暂停,刚好有一个“额外”的线程,可以确保在这种情况下CPU周期不会中断工作。

所以设置为CPU数+1是一个经验值对于I/O密集型 ,线程CPU 使用率较低,程序中会存在大量的 I/O 操作占用时间,导致线程空余时间很多。线程等待时间/线程CPU时间 大等于1,设置线程数为CPU数*2,后续根据实际情况进行动态的调整


区别


IO密集型:大量网络,文件操作

CPU 密集型:大量计算,cpu 占用越接近 100%, 耗费多个核或多台机器


总结


即使有上面的简单估算方法,也许看似合理,但实际上也未必合理,都需要结合系统真实情况(比如是IO密集型或者是CPU密集型或者是纯内存操作)和硬件环境(CPU、内存、硬盘读写速度、网络状况等)来不断尝试达到一个符合实际的合理估算值。

目录
打赏
0
0
2
0
4
分享
相关文章
从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革
从 Linux Crontab 到 K8s CronJob,定时任务正在经历怎样的变革
119099 59
设计模式第八讲:观察者模式和中介者模式详解
 定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。
268 0
ChatGPT模型采样算法详解
采样算法对ChatGPT的文本生成质量至关重要。本文重点讲解ChatGPT中temperature和top_p的采样原理,以及它们对模型输出的影响。帮助大家生成更灵活生动的内容。
2086 0
ChatGPT模型采样算法详解
Markdown如何定义公式编号,以及引用编号
Markdown如何定义公式编号,以及引用编号
1298 0
kde
|
13天前
|
Docker镜像加速指南:手把手教你配置国内镜像源
配置国内镜像源可大幅提升 Docker 拉取速度,解决访问 Docker Hub 缓慢问题。本文详解 Linux、Docker Desktop 配置方法,并提供测速对比与常见问题解答,附最新可用镜像源列表,助力高效开发部署。
kde
8877 51
|
10天前
typora免费版,激活方法,Typora使用教程
Typora是一款简洁高效的Markdown编辑器,支持即时渲染。本教程涵盖安装方法、文件操作、视图控制、格式排版、字体样式及Markdown语法,助你快速上手使用Typora进行高效写作。
2346 4
Dify MCP 保姆级教程来了!
大语言模型,例如 DeepSeek,如果不能联网、不能操作外部工具,只能是聊天机器人。除了聊天没什么可做的。
2199 33
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问