根据任务的类型合理选择线程池大小。任务类型有CPU密集型、IO密集型、混合型。
CPU密集型
:任务会消耗大量的CPU资源,推荐线程池大小为CPU核数+1。因为线程过多时线程切换会带来额外开销。IO密集型
:线程数需较大,以便线程等待IO返回时,CPU能执行其他线程的任务。
最佳线程数目= (线程等待时间与线程CPU时间之比 + 1) * CPU核数
混合型
:考虑拆分成CPU密集型和IO密集型。若CPU密集型和IO密集型的处理时间差不多,可以拆分,会比串行效率高。若CPU密集型和IO密集型的处理时间差很多,处理时间取决于时间长的,还要付出合并结果的开销,可能得不偿失。