1. corePoolSize 核心线程数
看处理业务属于IO密集型还是属于cpu密集型
IO密集型: 通常设置为N+1,还有一个计算公式:线程数 = cpu数*(线程等待时间+cpu运行时间/线程总的处理时间) 但是由于服务器除了这个服务可能还部署有其他服务,或者本身服务器需要占用一些cpu资源,所以正常情况我们需要进行压测,压测一个合理值m,再根据实际情况,如果业务属于长期高负荷,可以直接设置为m,最大线程数也设置为m;如何只是爆发性的高负荷,可以设置为比m少一点的数,最大线程数设置为m
2. maxPoolSize 最大线程数
参照核心线程数设置说明
3. 队列
一般用的是linkedBlockQueue,队列进出比较方便
任务队列长度一般设计为:核心线程数单个任务执行时间2即可;例如上面的场景中;核心线程数设计为10.单个任务执行时间为0.1秒,则队列长度可以设计为200;
4. keepalivetime
5. 拒绝策略
6. threadFactory 线程创建工厂
7. unit 空闲时间参数