1、不使用java内置线程池
因为会设置默认最大线程数,可能造成负载不足OOM
2、使用自定义线程池
比较重要的三个参数
coreThreadSize 核心线程数,通过最大线程数 * 20%
maxThreadSize 最大线程数
1、计算密集型(CPU密集型)
线程数=N(CPU数量)+1
2、IO密集型
线程数=N*CPU / (1-阻塞系数),常见系数 0.7~0.9之间
IO操作上的时间与CPU密集任务所耗的时间比值 ,例子:如果任务计算时间90%的时间双CPU都在闲置,线程则应设置为20
new ArrayBlockingQueue<>(MAXIMUM_CACHED_AMOUNT) 任务阻塞队列数,在满足业务的前提下压测,尽量减少队列积压,如果超过该值可拒绝处理
标签:队列,密集型,IO,使用,线程,CPU From: https://www.cnblogs.com/YangJava15/p/18396628