线程池ThreadPoolTaskExecutor 配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程池ThreadPoolTaskExecutor 配置相关的知识,希望对你有一定的参考价值。
参考技术A 参数说明:corePoolSize:线程池维护线程最小数量
maxPoolSize:线程池维护线程最大数量
keepAliveSeconds:(maxPoolSize-corePoolSize)部分线程空闲最大存活时间
queueCapacity:阻塞任务队列
AllowCoreThreadTimeOut:设置为true的话,keepAliveSeconds参数设置的有效时间对corePoolSize线程也有效
RejectedExecutionHandler:当提交任务数超过maxmumPoolSize+workQueue之和时,任务会交给RejectedExecutionHandler来处理
线程创建流程:
1.当线程数量小于corePoolSize时,创建线程,不管线程是不是闲置的
2.当线程数量大于等于corePoolSize时,把任务放到queueCapacity队列
3.当queueCapacity满了,就创建新的线程来执行
4.当线程数量大于等于maxPoolSize时,根据RejectedExecutionHandler设置的策略来处理新加入的任务
执行500个任务,每个任务执行需要花费6s,开启最大12个线程
执行完了之后,会有7个线程消亡(随机的)
如果此时再调用此接口,会再新创建7个线程(名字与之前消亡的7个线程不一样)
如果在线程消亡之前再次调用此接口,则还是使用当前的12个线程
以上是关于线程池ThreadPoolTaskExecutor 配置的主要内容,如果未能解决你的问题,请参考以下文章
spring boot: 线程池ThreadPoolTaskExecutor, 多线程
Spring线程池ThreadPoolTaskExecutor学习总结
Spring自带的线程池ThreadPoolTaskExecutor