简介
SpringBoot线程池配置心得。
1、核心配置参数
task:
pool:
corePoolSize: 4
maxPoolSize: 20
keepAliveSeconds: 300
#queueCapacity: 8
1、 queueCapacity 队列长度,参考源码可以发现,当我们限制队列长度的时候,很有可能会由于任务的疯狂提交导致后面的任务被全部拒绝处理。因此,如果单个任务耗费时间比较长,那么推荐不要去限制queueCapacity的长度,而让其保持默认值
private int corePoolSize = 1;
private int maxPoolSize = 2147483647;
private int keepAliveSeconds = 60;
private int queueCapacity = 2147483647; //该默认值
private boolean allowCoreThreadTimeOut = false;
以上是相关配置的默认值。这样,可以一口气加载我们提交的任务的上下文信息。
2、maxPoolSize和corePoolSize:可以理解为闲时的线程池维护的核心线程数量corePoolSize,当然,设置一些其他参数例如闲时时间参数时另算。再有maxPoolSize是当当前线程超过核心线程的时候,还可以继续创建的线程数量,由于任务和对应线程做了一一映射,也可以理解为系统当前处理的任务的最大数量,此时需要注意的是,不要设置的过大,根据电脑的性能以及任务的消耗进行对应设置,设置的过小那么不能最大程度利用机器性能,设置的过大则会导致系统卡死或者崩溃。
3、keepAliveSeconds: 程池维护线程所允许的空闲时间,同理,参考源码,其值默认为60s。