如何配置线程池

一:cpu密集型任务与IO密集型任务

  如果想合理的配置线程池,就需要了解我们任务的类型,是CPU密集型还是IO密集型,

CPU 密集型任务主要时间花费在计算上面,内存、硬盘、网络占用的时间少于cpu本身计算的时间,这时应配置尽可能小的线程,

避免线程之间频繁的切换消耗资源,如配置 Ncpu+1 个线程的线程池。

由于 IO 密集型任务线程并不是一直在执行任务,cpu的性能,消耗的时间少于请求内存、硬盘、网络的时间,这时大部分时间cpu处于空闲状态,

则应配置尽可能多的线程,如 2*Ncpu。 

什么是cpu密集型和IO密集型,参考: https://www.cnblogs.com/aspirant/p/11441353.html

二:举例

  1:依赖数据库连接池的任务,因为线程提交 SQL 后需要等待数据库返回结果, 等待的时间越长,则 CPU 空闲时间就越长,

那么线程数应该设置得越大,这样 才能更好地利用 CPU。

  

原文地址:https://www.cnblogs.com/warrior4236/p/12524032.html