线程池在IO密集或CPU密集场景下的配置
IO密集型:
是指那些大部分时间都在等待外部事件(如网络请求、磁盘操作等)的操作。
1、线程数设置:可以设置较多的线程数,因为线程在等待IO操作完成时可以挂起,让其他线程执行。
2、队列容量:可以设置较大的工作队列容量,以容纳更多的等待处理的任务。
3、超时设置:可以设置较短的任务等待超时时间,以便快速回收长时间等待IO的线程。
CPU密集型:
是指那些主要消耗CPU资源进行计算的操作。
1、线程数设置:线程数应设置为接近或等于机器的CPU核心数,以避免过多的线程竞争CPU资源,导致上下文切换的开销。
2、队列容量:可以设置较小的工作队列容量,因为CPU密集型任务通常不需要大量排队等待。
3、拒绝策略:当队列满了且没有空闲线程时,可以采用适当的拒绝策略,如抛出异常或丢弃任务。