线程池核心线程数最优设置

本文探讨了线程池大小设置的目的,主要是为了提高CPU利用率。对于计算密集型业务,核心线程数通常是CPU核数+1,以确保CPU高效利用;而I/O密集型场景下,线程池规模应更大,可能是CPU核数的两倍。线程池配置需根据实际业务测试调整,以达到最佳性能。
摘要由CSDN通过智能技术生成

一、线程池大小设置的目的是什么
  • 提高 CPU 的利用率

  • 提高 CPU 的利用率

  • 提高 CPU 的利用率

二、线程池核心线程数设置的依据
  • 计算密集型业务场景

    • 计算密集型是指处理这种任务时,线程不会发生阻塞,线程不阻塞就一定程度代表 CPU 一直在忙碌

    • 对于计算密集型的任务,在有 N 个处理器的系统上,当线程池的大小为 N+1 时,能实现 CPU 的最优利用率。(即使当计算密集型的线程 偶尔由于代码缺陷故障或者其他原因暂停时,这个 额外 的线程也能确保 CPU 的时装周期不会被浪费。)

  • I/O 密集型业务场景

    • I/O 密集型是指运行该类任务时线程多会发生阻塞,一旦阻塞,CPU 就多被闲置,浪费 CPU 资源

    • 对于 I/O 操作或其它阻塞任务,由于线程并不会一直执行,因此线程池的规模应该更大

三、线程池核心线程数的计算公式
  • 计算密集型

    单个线程池 = CPU 核数 + 1

    多个线程池 = CPU 核数 / 线程池个数

  • I/O 密集型

    单个线程池 = CPU 核数的两倍

    多个线程池 = 多个线程池核心线程数之和 = CPU 核数的两倍

P.S

这些设置没有绝对的正确性,需要根据业务场景去测试和计算,生产环境可以设置得保守一些

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值