一般说,大家认为线程zhi池的大小经验值应该这样设置:(其中N为CPU的个数)

如果是CPU密集型应用,则线程池大小设置为N+1

如果是IO密集型应用,则线程池大小设置为2N+1(因为io读数据或者缓存的时候,线程等待,此时如果多开线程,能有效提高cpu利用率)
如果一台服务器上只部署这一个应用并且只有这一个线程池,那么这种估算或许合理,具体还需自行测试验证。

但是,IO优化中,这样的估算公式可能更适合:

最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 )* CPU数目

因为很显然,线程等待时间所占比例越高,需要越多线程。线程CPU时间所占比例越高,需要越少线程。

下面举个例子:

比如平均每个线程CPU运行时间为0.5s,而线程等待时间(非CPU运行时间,比如IO)为1.5s,CPU核心数为8,那么根据上面这个公式估算得到:((0.5+1.5)/0.5)*8=32。这个公式进一步转化为:

最佳线程数目 = (线程等待时间与线程CPU时间之比 + 1)* CPU数目

https://zhidao.baidu.com/question/1308727768994846299.html

java 线程池配置与CPU关系相关推荐

  1. Java多线程之线程池配置合理线程数

    Java多线程之线程池配置合理线程数 目录 代码查看公司服务器或阿里云是几核的 合理线程数配置之CPU密集型 合理线程数配置之IO密集型 1. 代码查看公司服务器或阿里云是几核的 要合理配置线程数首先 ...

  2. Java线程池七大参数详解和配置

    目录 一.corePoolSize核心线程数 二.maximunPoolSize最大线程数 三.keepAliveTime空闲线程存活时间 四.unit空闲线程存活时间的单位 五.workQueue线 ...

  3. spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java

    spring定时任务Scheduled与定时任务线程池配置SchedulingConfigurer ,Java spring默认定时任务的使用 package zhangphil.demo;impor ...

  4. Java线程池实现原理及其在美团业务中的实践

    来自:美团技术团队 随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供的线程池ThreadPoolExecuto ...

  5. java 线程池ThreadPoolExecutor

    线程池 线程池的作用: 线程池作用就是限制系统中执行线程的数量. 根 据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数 ...

  6. Java线程池使用说明

    Java线程池使用说明 一 简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之 ...

  7. 【转载】Java线程池详解

    目录 1.线程池的优势 2.Java中的ThreadPoolExecutor类 3.线程池的主要参数 4.线程池流程 5.线程池为什么需要使用(阻塞)队列? 6.线程池为什么要使用阻塞队列而不使用非阻 ...

  8. (转载) Java线程池原理

    Java线程池使用说明 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后 ...

  9. Java 线程池及参数动态调节详解

    前前言:本文搬自:why技术 前言:曾经自诩对线程池了如指掌,不料看了美团的一篇技术文章后才知道原来线程池的参数还可以动态调节. 经典面试题 在这篇文章中我主要回答上面抛出的这个问题:你这几个参数的值 ...

最新文章

  1. 终于不瞎编了!AI学会了“谷歌一下”,回答问题正确率达90% | DeepMind
  2. linux modprobe 内核模块加载卸载命令 简介
  3. 如何用redis实现分布式锁?这篇文章教你用redisson实现分布式锁,封装之后的方法更好用!
  4. Spring Cloud 基于Consul 实现服务注册与发现
  5. JAVA Web Servlet中的异步处理 (2) -- Servlet3.1中的Non-blocking IO支持
  6. [转]Excel数据转化为sql脚本
  7. Django REST framework 源码中提供的默认配置
  8. oracle与raw device
  9. 能干什么_闲鱼流量系统能干什么?真的有用吗?
  10. c语言堆栈基本代码入栈出栈_C/C++语言栈的出栈入栈操作实现(完整代码)
  11. 信息安全系统设计基础第四周学习总结—20135227黄晓妍
  12. 墨迹天气语音包_广州天气|冷空气到货,任性吃火锅的理由又有了
  13. 桌面虚拟化之本地模式(离线模式)大比拼
  14. 、简述global关键字的作用_二十三、Python变量作用域(局部变量和全局变量)
  15. Win11应用商店怎么更新新版?应用商店更新教程
  16. 如何***内网windows xp的几种思路和方法
  17. 九月腾讯,创新工场,淘宝等公司最新面试三十题
  18. Halide(win10vs2019环境搭建)小试牛刀
  19. jQuery-简述篇
  20. jsp+servlet实现个人博客系统

热门文章

  1. python加密库_python基于pyDes库实现des加密的方法
  2. java按需读取word文件_干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结...
  3. oracle显示多表数据,Oracle DB 使用连接显示多个表中的数据
  4. java一维数组初始化_Java一维数组,初始化一维数组详解
  5. 清华大学范玉顺互联网与大数据_清华大学范玉顺:大数据、人工智能与工业互联网...
  6. java run_javarun
  7. gram矩阵_ZEN-基于N-gram的中文Encoder
  8. 鸿蒙系统开发者公测,公测尝鲜开启!华为Mate40/P40开始和安卓渐行渐远
  9. mysql mha官网下载_mysql MHA 及多主复制
  10. 【c语言】蓝桥杯算法训练 完数