线程池各个参数设置说明

1. corePoolSize 核心线程数

       看处理业务属于IO密集型还是属于cpu密集型
       IO密集型:  通常设置为N+1,还有一个计算公式:线程数 = cpu数*(线程等待时间/线程总的处理时间)  但是由于服务器除了这个服务可能还部署有其他服务,或者本身服务器需要占用一些cpu资源,所以正常情况我们需要进行压测,压测一个合理值m,再根据实际情况,如果业务属于长期高负荷,可以直接设置为m,最大线程数也设置为m;如何只是爆发性的高负荷,可以设置为比m少一点的数,最大线程数设置为m

2. maxPoolSize 最大线程数

参照核心线程数设置说明

3. 队列
一般用的是linkedBlockQueue,队列进出比较方便
任务队列长度一般设计为:核心线程数单个任务执行时间*2即可;例如上面的场景中;核心线程数设计为10.单个任务执行时间为0.1秒,则队列长度可以设计为200;

4. keepalivetime
5. 拒绝策略
6. threadFactory 线程创建工厂
7. unit 空闲时间参数

你可能感兴趣的:(java,开发语言)