面试必问 您所在的位置:网站首页 java线程池大小多少才合适 面试必问

面试必问

2024-03-13 13:50| 来源: 网络整理| 查看: 265

文章目录 CPU密集型任务IO密集型任务混合型任务配置线程池大小的原则-阻抗公式 参考

CPU密集型任务

也叫计算密集型任务,这种类型大部分状况下,CPU使用时间远高于I/O耗时,计算要处理、许多逻辑判断,几乎没有I/O操作的任务就属于CPU密集型 如果是CPU密集型任务,频繁切换上下线程是不明智的,此时应该设置一个较小的线程数,比如CPU的数目加1 CPU密集型任务应配置尽可能小的线程,如配置CPU个数+1的线程数

IO密集型任务

IO密集型则是系统运行时,大部分时间都在进行I/O操作,CPU占用率不高 比如:任务对其他系统资源有依赖,如某个任务依赖数据库的连接返回的结果,这时候等待的时间越长,则CPU空闲的时间越长,那么线程数量应设置得越大,才能更好的利用CPU, 不让CPU闲下来, 但也不宜过多,需要注意线程切换的开销

IO密集型任务应配置尽可能多的线程,因为IO操作不占用CPU,不要让CPU闲下来,应加大线程数量,如配置两倍CPU个数+1

混合型任务

对于混合型的任务,如果可以拆分,拆分成IO密集型和CPU密集型分别处理,前提是两者运行的时间是差不多的,如果处理时间相差很大,则没必要拆分了。

配置线程池大小的原则-阻抗公式

我们发现线程池设置线程数与CPU计算时间和I/O操作时间的比例相关,一个配置线程池大小的原则——阻抗匹配原则,其经验公式为:

N = CPU数量 P = CPU繁忙时间 / 总运行时间 // 0


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有