Java多线程如何确定线程数

一、Java并发编程实战

在这里插入图片描述

仔细观察上面两个公式,其实是类似的,在CPU使用率达到100%时,其实结论是一致的,这时候计算线程的公式就变成了:
N t h r e a d s = N c p u ∗ 100 % ∗ ( 1 + w / c ) N_{threads}=N_{cpu}*100\%*(1+w/c) Nthreads=Ncpu100%(1+w/c)

根据上面的公式,我们在实践应用中计算的公式就出来了,如下:

  1. 针对IO密集型的:阻塞耗时w一般都是计算耗时的几倍,假设阻塞耗时=计算耗时的情况下, N t h r e a d s = N c p u ∗ ( 1 + 1 ) = 2 N c p u N_{threads}=N_{cpu}*(1+1)=2N_{cpu} Nthreads=Ncpu(1+1)=2Ncpu
  2. 对于计算密集型的,阻塞耗时趋于0,即w/c趋于0,公式 N t h r e a d s = N c p u N_{threads}=N_{cpu} Nthreads=Ncpu

注意上面只是做出的较为普适的线程数公式推算,实际应用中需要考虑多个方面,比如内容容量消耗,任务耗时等,可以对这个公式进行不断的场景调整适配。

参考:
参考文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值