SpringBoot 整合线程池及各参数详解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 整合线程池及各参数详解相关的知识,希望对你有一定的参考价值。
参考技术AThreadPoolConfig
ThreadController
AsyncService
AsyncServiceImpl
application.yaml
运行结果
参数默认值及含义
对照源码解析,可以得出以下结论:
1.如果线程池中线程数量 < 核心线程数,新建一个线程执行任务;
2.如果线程池中线程数量 >= 核心线程数,则将任务放入任务队列
3.如果线程池中线程数量 >= 核心线程数 且 < maxPoolSize,且任务队列满了,则创建新的线程;
4.如果线程池中线程数量 > 核心线程数,当线程空闲时间超过了keepalive时,则会销毁线程;由此可见线程池的队列如果是无界队列,那么设置线程池最大数量是无效的;
5.如果线程池中的任务队列满了,而且线程数达到了maxPoolSize,并且没有空闲的线程可以执行新的任务,这时候再提交任务就会执行拒绝策略
拒绝策略详解
拒绝策略RejectedExecutionHandler分为以下5种
结论
这几种策略没有好坏之分,只是适用不同场景,具体哪种合适根据具体场景和业务需要选择,如果需要特殊处理就自己定义好了。
以上是关于SpringBoot 整合线程池及各参数详解的主要内容,如果未能解决你的问题,请参考以下文章