Java多线程之如何确定线程数的方法
- 软件编程
- 2026-01-11 07:38:29
关于多线程的线程数的确定,最近研读过几篇paper,在此做一下笔记,方便使用时翻看。

1、《Java 虚拟机并发编程》中介绍
就是说:线程数 = CPU的核心数 * (1 - 阻塞系数)
另一篇:《Java Concurrency in Practice》即《java并发编程实践》,给出的线程池大小的估算公式:
Nthreads=Ncpu*Ucpu*(1+w/c),其中 Ncpu=CPU核心数,Ucpu=cpu使用率,0~1;W/C=等待时间与计算时间的比率
仔细推敲两个公式,其实类似,在cpu使用率达100%时,其实结论是一致的,这时候计算线程数的公式就成了,Nthreads=Ncpu*100%*(1+w/c) =Ncpu*(1+w/c)。
那么在实践应用中计算的公式就出来了,【以下推算,不考虑内存消耗等方面】,如下:
1、针对IO密集型的,阻塞耗时w一般都是计算耗时几倍c,假设阻塞耗时=计算耗时的情况下,Nthreads=Ncpu*(1+1)=2Ncpu,所以这种情况下,建议考虑2倍的CPU核心数做为线程数
2、对于计算密集型的,阻塞耗时趋于0,即w/c趋于0,公式Nthreads = Ncpu。
总结:
上面只是做出的较为普适的线程数公式推算,实际应用中可以会考虑多个方面,比如内存容量消耗,任务耗时等,可以对这个公式进行不断的场景调整适配。
# 都是
# align
# center
# text
# 多个
# 在此
# 情况下
# 等方面
# 实际应用
# 多线程
# 几倍
# 出来了
# 以对
# code
# paper
# 这时候
# 几篇
# 就成了
# 率达
# Java超详细讲解多线程中的Process与Thread
# 分享Java多线程实现的四种方式
# Java让多线程按顺序执行的几种方法
# 你真的了解Java的多线程方法吗
# 详解Java实现多线程的三种方式
# Java多线程与线程池技术分享
# Java详解多线程协作作业之信号同步
# Java深入浅出讲解多线程的概念到使用
# Java 确定线程数
# Java 线程数
# Ucpu
相关栏目:
【
教研文案 】
【
日常文案 】
【
AI模型 】
【
网络运营 】
【
营销推广 】
【
云计算 】
【
技术教程 】
【
软件编程 】
【
汉字学习 】
【
歌词歌曲 】
【
精选文章 】
相关推荐:
PHP数组实际占用内存大小原理解析
Shell中使用grep、sed正则提取和替换字符串
ES6中的类(Class)示例详解
Shell退出状态码及其应用详解
python3中TQDM库安装及使用详解
C++实现学生信息管理系统
Pandas中DataFrame交换列顺序的方法实现
Java中SPI的一些理解
解决Docker中的error during connect异常情况
Python web框架(django,flask)实现mysql数据库读写分离的示例
关于SpringBoot使用Redis空指针的问题(不能成功注入的问题)
ASP.NET Core处理管道的深入理解
MySQL数据库锁机制原理解析
Java String的intern方法使用场景示例
vue3.0实现点击切换验证码(组件)及校验
MYSQL字符串强转的方法示例
在C#中List集合使用First()方法获取第一个元素的操作
python更新数据库中某个字段的数据(方法详解)
python 实现ping测试延迟的两种方法
JavaScript实现alert弹框效果
MySQL 如何连接对应的客户端进程
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Android实现网易云音乐的旋转专辑View
flask项目集成swagger的方法
安装IDEA和配置Maven的步骤详解
Java 判断实体对象及所有属性是否为空的操作
解决goland新建项目文件名为红色的问题
Django中使用Celery的方法步骤
JS实现可以用键盘方向键控制的动画
python的dict判断key是否存在的方法
PHP如何防止用户重复提交表单
使用Python提取文本中含有特定字符串的方法示例
python 解决函数返回return的问题
Pycharm plot独立窗口显示的操作
Springboot非分布式定时任务实现代码
PHP基于ip2long实现IP转换整形
Vue实现点击当前行变色
在docker容器中使用非root用户执行脚本操作
react中hook介绍以及使用教程
C语言单链表实现学生管理系统
详解vue中使用transition和animation的实例代码
JAVA Web.xml加载顺序过程详解
C# 中使用 Exceptionless的方法
Springcloud seata分布式事务实现代码解析
微信小程序实现点击导航条切换页面
Python并发爬虫常用实现方法解析
IDEA main主函数如何添加args变量
idea自定义快捷代码生成模板的方法
SSO单点登录系统实现原理及流程图解
Java8中 LocalDate和java.sql.Date的相互转换操作
本文转自网络,如有侵权请联系客服删除。
热门内容推荐
C#使用虚拟方法实现多态
- 2026-01-11
JavaScript原生对象之String对象的属性和方法详解
- 2026-01-11
js实现DOM走马灯特效的方法
- 2026-01-11
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
- 2026-01-11
php实现微信公众平台账号自定义菜单类
- 2026-01-11
