SpringBoot 整合线程池及各参数详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 整合线程池及各参数详解相关的知识,希望对你有一定的参考价值。

参考技术A

ThreadPoolConfig

ThreadController

AsyncService

AsyncServiceImpl

application.yaml

运行结果

参数默认值及含义

对照源码解析,可以得出以下结论:

1.如果线程池中线程数量 < 核心线程数,新建一个线程执行任务;

2.如果线程池中线程数量 >= 核心线程数,则将任务放入任务队列

3.如果线程池中线程数量 >= 核心线程数 且 < maxPoolSize,且任务队列满了,则创建新的线程;

4.如果线程池中线程数量 > 核心线程数,当线程空闲时间超过了keepalive时,则会销毁线程;由此可见线程池的队列如果是无界队列,那么设置线程池最大数量是无效的;

5.如果线程池中的任务队列满了,而且线程数达到了maxPoolSize,并且没有空闲的线程可以执行新的任务,这时候再提交任务就会执行拒绝策略

拒绝策略详解

拒绝策略RejectedExecutionHandler分为以下5种

结论

这几种策略没有好坏之分,只是适用不同场景,具体哪种合适根据具体场景和业务需要选择,如果需要特殊处理就自己定义好了。

以上是关于SpringBoot 整合线程池及各参数详解的主要内容,如果未能解决你的问题,请参考以下文章

java 自定义线程池及参数怎么设置?

jquery ajax 方法及各参数详解

kafka整合springboot以及核心参数的使用

jquery ajax 方法及各参数详解

JUC并发编程线程池及相关面试题 详解

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用