线程池默认大小设置

本文讨论了在Java多线程开发中如何设置线程池大小,针对CPU密集型和IO密集型任务,提供了推荐的线程数设置原则,并强调了根据压测结果进行微调的重要性。默认情况下,生产环境线程池规模应为压测环境的75%。
摘要由CSDN通过智能技术生成

目录

问题

结论

正文

代码


问题

Java 多线程开发中,一般需要用到线程池,线程池的大小应该如何设置?

如果线程池太小,则无法压榨全部 cpu 性能,线程池太大的话,则过多的上下文切换,反而会起到反效果。

结论

默认:

  • CPU密集型:CPU核心线程数 + 1
  • IO密集型:CPU核心线程数 * (1 + IO耗时 / CPU耗时)

实际业务场景:

  • 根据压测结果来进行微调。一般情况下,保证生产环境为压测环境的75%

正文

程序可以分为CPU密集型和IO密集型。

如果是CPU密集型,有多少个CPU核心线程,线程池大小设置多少个,这样就能够将CPU全部利用起来。但是考虑到线程有可能因为内存页失效或其他原因导致阻塞,多设置一个线程可以保证CPU的利用率。

如果是IO密集型,线程池大小则和IO耗时成正比。IO耗时长,线程更容易阻塞,从而浪费CPU资源。适当增加线程池的线程数,可以提高CPU的利用率。

以上是默认情况下配置,实际的业务场景可以根据压测结果来进行微调。一般情况下,保证生产环境为压测环境的75%。

代码

Java 获取可计算资源数

public class Test {
    public static void main(String[] args) {
        Runtime.getRuntime().availableProcessors();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值