设置线程池的大小
来源:互联网 发布:北京华道数据有限公司 编辑:程序博客网 时间:2024/05/05 21:48
线程池的理想大小取决于被提交任务的类型以及所部属系统的特性。在系统中一般不固定线程池的大小,而是通过某种配置机制来提供。或则根据处理器的数量来决定:
我们可以通过如下代码来获取处理器的数量:
//获取处理器的数量 System.out.println(Runtime.getRuntime().availableProcessors());
这行代码可以直接输出当前机器处理器的数量。
对于线程池的大小不能过大也不能过小。过大就会有大量的线程在相对较少的CPU和内存上竞争,过小会导致许多空闲的处理器无法工作,从而降低吞吐率。
对于设置线程池的大小我们需要考虑的问题有:
1、机器有多少个CPU?
2、多大内存?
3、任务是计算密集型还是IO密集型?
4、是否需要像JDBC这种稀缺资源?
等等
一般情况下:
计算密集型的任务,在拥有N个处理器的系统上,当线程池的大小为N+1时通常能实现最优利用率。
对于IO密集型的任务,由于包括IO和阻塞操作的任务,线程不会一直执行即不会一直用到CPU,所以需要更多的线程,具体的多少得根据一些资源需求和计算公式得到。
我们有如下公式
NT(最佳线程数量)= N * U * (1+W/C)
上面:NT:最优线程数量
N:服务器CPU的数量
U:CPU的利用率;
W/C: 是线程等待时间与线程CPU时间之比
当然上面只是一个估计值,也不是绝对的,具体的还得通过监控服务器的运行状态来确定。但是大致可以推断出一个结论:
可以得出一个结论:
线程等待时间所占比例越高,需要越多线程。线程CPU时间所占比例越高,需要越少线程。
0 0
- 设置线程池的大小
- 设置线程池的大小
- 线程池设置大小
- 设置CLR线程池的默认大小
- linux线程栈大小的设置
- 如何合理设置线程池大小
- 设置线程栈大小
- 线程大小设置
- 定制线程池的大小
- 调整线程池的大小
- 线程池的最优大小
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- ThreadPoolExecutor使用和思考-线程池大小设置与BlockingQueue的三种实现区别
- ArcGIS Desktop 10.2 完全破解安装教程(含win7 32/64位+下载地址+亲测可用)
- AFNetworking 3.0迁移指南
- LeetCode学习之路-Longest Palindromic Substring
- 闯过这 54 关,点亮你的 Git 技能树
- 大华网络摄像机升级软件binwalk分析
- 设置线程池的大小
- S9.2_Struts2_OtherTag 常见的非UI标签
- (小知识点)急速打开splash页面
- 代码整洁之道笔记(二)
- SQL 语句 综合运用
- InversionOfControl
- [JS] 省市区三级联动(行政区划代码更新至2015-9-30)
- 昨日 2017.1.10
- 富文本-直接修改文本框