MySQL并发数 CPU核心数_转 根据CPU核心数确定线程池并发线程数

本文探讨了如何根据CPU核心数确定线程池的并发线程数,主要涉及《Java Concurrency in Practice》和《Programming Concurrency on the JVM》中的两个派系观点。计算密集型任务线程数建议为CPU核心数,而IO密集型任务建议为2倍CPU核心数。实际应用中应考虑任务类型、内存等因素,并通过测试找到最佳线程数。
摘要由CSDN通过智能技术生成

正文

一、抛出问题

关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下:

第一派:《Java Concurrency in Practice》即《java并发编程实践》,如下图:

4a722acddd1951ecb6574b10530746f2.png

如上图,在《Java Concurrency in Practice》一书中,给出了估算线程池大小的公式:

Nthreads=Ncpu*Ucpu*(1+w/c),其中

Ncpu=CPU核心数

Ucpu=cpu使用率,0~1

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

第二派:《Programming Concurrency on the JVM Mastering》即《Java 虚拟机并发编程》

75b15981d38c7d9d1b469d30e34db7ff.png

线程数=Ncpu/(1-阻塞系数)

二、分析

对于派系一,假设cpu100%运转,即撇开CPU使用率这个因素,线程数=Ncpu*(1+w/c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值