线程池核心线程数-计算方式
线程池的工况一般分为三种场景:
计算密集型
需要大量的计算,对 CPU 高占用率,CPU Loading 90-100%,除开 CPU需要读/写I/O(硬盘/内存),但这些 I/O 只需要很短的时间就可以完成,更多的是 CPU 需要进行很多数据运算,数学运算,CPU Loading 很高的场景。
例如数据分析,数据流处理,此类程序运行的过程中,CPU占用率一般都很高。
假如在单核CPU情况下,线程池有6个线程,但是由于是单核CPU,所以同一时间只能运行一个线程,考虑到线程之间还有上下文切换的时间消耗,还不如单个线程执行高效。所以,单核 CPU 处理计算密集型程序,就不要使用多线程了。
假如是6个核心的CPU,设置6个线程数,理论上运行速度可以提升6倍(但实际上达不到,多线程之间有并发以及需要优化的地方)。每个线程都有 CPU 来运行,并不会发生等待