如何配置线程池
一: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。