文档章节

Java线程池配置原则

K_ONE
 K_ONE
发布于 2017/02/23 08:28
字数 364
阅读 24
收藏 0

CPU密集orIO密集or混合型

看应用是CPU密集型的还是IO密集型的,还是混合型的。

  • CPU密集CPU密集型的话,一般配置CPU处理器个数+/-1个线程,所谓CPU密集型就是指系统大部分时间是在做程序正常的计算任务,例如数字运算、赋值、分配内存、内存拷贝、循环、查找、排序等,这些处理都需要CPU来完成。

  • IO密集IO密集型的话,是指系统大部分时间在跟I/O交互,而这个时间线程不会占用CPU来处理,即在这个时间范围内,可以由其他线程来使用CPU,因而可以多配置一些线程。

  • 混合型混合型的话,是指两者都占有一定的时间。

估算的经验公式

  • Ncpu=CPU的数量

  • Ucpu=目标CPU使用率

  • W/C=等待时间与计算时间的比率

为保持处理器达到期望的使用率,最优的线程池的大小等于

Nthreads=Ncpu*Ucpu*(1+W/C)

观察线程池统计信息

Java中,可以通过Runtime.getRuntime().availableProcessors()获取可以用的cpu数量。

具体线程池大小观测,可以通过覆盖executor的钩子方法,进行线程池的监控,查看等待队列大小等等,主要观察等待队列的大小以及拒绝的任务多少。

本文转载自:https://segmentfault.com/a/1190000004249911

共有 人打赏支持
K_ONE
粉丝 5
博文 33
码字总数 23151
作品 0
杭州
程序员
私信 提问
Java虚拟机监控指标及监控配置

版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/70229653 主要是对Java虚拟机(JVM)的远程监视,如jdk自带的工具j...

smooth00
2017/04/28
0
0
Java并发编程之ThreadLocal内存泄漏探究

使用 ThreadLocal 不当可能会导致内存泄露,是什么原因导致的内存泄漏呢? 我们首先看一个例子,代码如下: / Created by cong on 2018/7/14. */public class ThreadLocalOutOfMemoryTest { ...

狂小白
07/14
0
0
JVM学习总结(一)运行时数据区

《深入Java虚拟机》这本书买了有一段时间了,当时看的时候就只是看,并没有边看边总结啥的,最后发现到脑子里面的根本所剩无几了。现在开始要好好归纳总结地再学习一遍。 运行时数据区域 JV...

hensemlee
04/22
0
0
《编写高质量代码:改善java程序的151个建议》笔记

前言: 很喜欢作者的前言: 对于java,我非常感激,从物质上来说,它给了我工作,帮我养家糊口;从精神上来说,它带给我无数的喜悦、困惑、痛苦、无奈------一如我们的生活。 第10章:性能和...

城固如春
2017/11/01
0
0
Hinernate中获得数据库连接池的方式及应用

Hibernate可以与任何一种java应用的运行环境集成。Java应用的运行环境可分为两种。 (1)受管理环境(Managed environment):由容器负责管理各种共享资源(如线程池和数据库连接池),以及管理...

_守望者_
2014/04/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Windows / Linux / MacOS 设置代理上网的方法汇总

本文汇总了 Windows / Linux / MacOS 设置代理上网的各种方法,总结如下: 1、设置系统代理(Windows、Linux、MacOS) 2、设置代理插件(Chrome、Chromium、Firefox、Opera、QQ等浏览器) 3、...

sunboy2050
昨天
1
0
自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
昨天
1
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
昨天
2
0
linux定位应用问题的一些常用命令,特别针对内存和线程分析的dump命令

1.jps找出进程号,找到对应的进程号后面才好继续操作 2.linux查看进程详细信息 ps -ef | grep 进程ID 3. dump内存信息 Jmap -dump:format=b,file=YYMMddhhmm.dump pid 4.top查看cpu占用信息 ...

noob_chr
昨天
2
0
Android TV开发-按键焦点

写在前面 按键焦点过程了解 2.1 dispatchKeyEvent 过程了解 2.2 焦点查找请求过程了解 1.2.1 第一次获取焦点 1.2.3 按键焦点 焦点控制 焦点记忆 应用场景 参考资料 [TOC] 1. 写在前面 工...

冰雪情缘l
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部