【并发编程篇22】如何确定核心线程数

52 阅读1分钟

有什么凭证?

  • IO密集型任务(一般来说:文件读写、DB读写、网络请求等)
    • 核心消除数大小设置为2N+1
  • CPU密集型任务(计算型代码、Bitmap转换、Gson转换等)
    • 核心线程数大小设置为N+1

通过代码来查询机器的CPU核数

    Runtime.getRuntime().availableProcessors();

如何确定核心线程数

  1. 高并发、任务执行时间短 --> CPU核心数+1,减少线程上下文切换
  2. 并发不高,任务执行时间长
    • IO密集型的任务 -->(CPU核心数*2 + 1)
    • 计算密集型任务 -->(CPU核心数 + 1)
      3.并发高,业务执行时间长,解决这种类型任务的关键不在于线程池而在于整体架构设计,看看这些业务里面某些数据是否能做缓存是第一步,增加服务器是第二步,至于线程池的设置参考2