线程池到底参数设置多少线程才合适?

本文分析了《Java Concurrency in Practice》和《Java 虚拟机并发编程》中关于线程池大小计算的两种观点,并进行了实际应用的探讨。对于IO密集型任务,推荐线程数为2Ncpu,而对于计算密集型任务,线程数应等于CPU核心数Ncpu。Java中获取CPU核心数的方法是Runtime.getRuntime().availableProcessors()。
摘要由CSDN通过智能技术生成

目录

  • 一、抛出问题

  • 二、分析

  • 三、实际应用

  • 四、总结:

抛出问题

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

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

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

Nthreads=NcpuUcpu(1+w/c),其中

Ncpu=CPU核心数

Ucpu=cpu使用率,0~1

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

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

线程数=Ncpu/(1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值