先看下机器的CPU核数,然后在设定具体参数:
System.out.println(Runtime.getRuntime().availableProcessors());
即CPU核数 = Runtime.getRuntime().availableProcessors()
1、CPU密集型
- CPU 密集的意思是该任务需要大量的运算,而没有阻塞,CPU 一直在全身运行
- CPU 密集人文只有在真正的多核CPU 上通过多线程才可以得到加速,而单核 CPU 无论你开多少个多线程都不可能得到明显的速度提升,因为 CPU 的资源是有限的
- CPU 密集型任务配置尽可能少的线程数量:公式(CPU核心 + 1)
2、IO 密集型
2.1 由于 IO 密集型任务线程并不是一直在执行任务,则应配置尽可能多的线程,公式(CPU * 2)
2.2 IO 密集型,及该任务需要大量的 IO ,即大量的阻塞
在单线程上运行 IO 密集型任务会导致大量时间浪费在等待上,所以在IO密集型任务中使用多线程可以大大的加速程序运行能力,即使在单核 CPU 上,这种加速主要就是利用程序等待 CPU 的时间。
公式:核心线程数 = CPU / (1 - 阻塞系数) 例如阻塞系数 0.8 ,CPU 的核心数为 4 ,则核心线程数为 20
最后修改于 2020-08-04 14:55:12
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

