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