ThreadPoolTaskExecutor 几个参数的含义

解释

1.corePoolSize:核心线程数(同时处理的能力)
2.queueCapacity:队列容量
3.maxPoolSize:最大线程数;决定了当corePoolSize 以及queueCapacity 满了以后,会在线程中额外创建线程的


假如corePoolSize和queueCapacity均为5,而maxPoolSize等于12.那么当线程大于12的时候(也就是corePoolSize,queueCapacity都满且额外创建了7个线程,依旧有线程过来),那么大于12的线程会走拒绝策略,也就是maxPoolSize=corePoolSize+x(个线程(非队列))

4.keepAliveSeconds:当任务处理完以后,线程池中的线程数还大于corePoolSize,那么多余的
线程会被回收。也就是超时回收时间

 

关系

corePoolSize:当线程数小于corePoolSize个的时候,正常创建线程

queueCapacity:当线程大于corePoolSize个的时候,将线程放入queueCapacity大小的队列

maxPoolSize:当queueCapacity队列已满,将会继续创建线程,直到线程数超过maxPoolSize的大小,将抛出异常

ThreadPoolTaskExecutor 几个参数的含义_第1张图片

问题

1.maxPoolSize <  corePoolSize+queueCapacity  

答:  可以,没有直接关系因为maxPoolSize = corePoolSize+x   其中x 必须是queueCapacity满了才有

2.maxPoolSize <  corePoolSize  

不可以,会报错,源码要求maxPoolSize必须大于等于corePoolSize

 

你可能感兴趣的:(java)