线程池使用

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) 任务阻塞队列数,在满足业务的前提下压测,尽量减少队列积压,如果超过该值可拒绝处理

posted @ 2024-09-04 15:42  Yang_Java15  阅读(22)  评论(0)    收藏  举报