线程池核心线程数配置公式

刺骨的言语ヽ痛彻心扉 2022-10-14 01:01 358阅读 0赞

线程池合理的线程数你是如何考虑的?这也是之前面试遇到的一个题:

1.先看下机器的CPU核数,然后在设定具体参数:

System.out.println(Runtime.getRuntime().availableProcessors());

即CPU核数 = Runtime.getRuntime().availableProcessors()

2.分析下线程池处理的程序是CPU密集型,还是IO密集型

CPU密集型:核心线程数 = CPU核数 + 1

IO密集型:核心线程数 = CPU核数 * 2

注:IO密集型(某大厂实践经验)

  1. 核心线程数 = CPU核数 / 1-阻塞系数) 例如阻塞系数 0.8CPU核数为4
  2. 则核心线程数为20

如果处理器是多核心的,使用多线程编程可以让不同的线程运行在不同的CPU上,线程同时运行,让CPU资源充分被利用。但是在单核处理器中使用多线程编程,也是能起作用的,打个比方,如果一个线程在做I/O操作,这时候这个线程是阻塞状态的,那么这个线程就可以在I/O操作的时间段内,让出CPU资源,给另一个线程使用,这样CPU资源就不会被浪费,可以被充分的利用起来。所以使用多线程编程和处理器是不是多核无关 ,需要就用,是能起效的。

发表评论

表情:
评论列表 (有 0 条评论,358人围观)

还没有评论,来说两句吧...

相关阅读

    相关 线核心线怎么设置呢?

    线程池的核心线程数通常由操作系统或Java虚拟机(JVM)自动调整。在某些情况下,你可以手动设置线程池的核心线程数。具体的设置方法可能会因使用的框架或库而异。以下是在几种常见情