SpringBootTest运行线程池被拒绝

复制代码
localhost myApp 2025-10-14 20:07:46.646 ERROR ???? [nTaskExecutor-8] s.l.SmsSendMsgRecordConsumerListenerTest:148 : [] [] [] validAddressMatchedMoveOrderMsg error, e->
java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply@21dd0075 rejected from java.util.concurrent.ThreadPoolExecutor@449d25f9[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
	at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063) 
	at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830) 
	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1379) 
	at java.util.concurrent.CompletableFuture.asyncSupplyStage(CompletableFuture.java:1618) 
	at java.util.concurrent.CompletableFuture.supplyAsync(CompletableFuture.java:1843) 
	at com.pdd.service.oakland.sending.listener.SmsSendMsgRecordConsumerListenerTest.validAddressMatchedMoveOrderMsg(SmsSendMsgRecordConsumerListenerTest.java:117) 
	at com.pdd.service.oakland.sending.listener.SmsSendMsgRecordConsumerListenerTest.lambda$consumeMessage$0(SmsSendMsgRecordConsumerListenerTest.java:78) 
	at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1640) 
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
	at java.lang.Thread.run(Thread.java:750) 

和SpringBootTest容器销毁时间有关系,这里的使用场景是线程池嵌套线程池,CompletableFuture嵌套CompletableFuture

在第一个线程池任务全部提交完成之后,才会开始运行第二个线程池,这个时候容器已经在销毁了,所以会提示线程池已经TERMINATED了

在中途打断点用isTerminated()方法是可以看到线程池还没有关闭的

相关推荐
德思特39 分钟前
从 Dify 配置页理解 RAG 的重要参数
java·人工智能·llm·dify·rag
YOU OU1 小时前
Spring IoC&DI
java·数据库·spring
один but you1 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言
是码龙不是码农2 小时前
ThreadPoolExecutor 7 个核心参数详解
java·线程池·threadpool
这是程序猿2 小时前
Spring Boot自动配置详解
java·大数据·前端
MY_TEUCK2 小时前
【Java 后端 | Nacos 注册中心】微服务治理原理、选型与注册发现实战
java·开发语言·微服务
小江的记录本3 小时前
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
二宝哥4 小时前
离线安装maven
java·数据库·maven
日月云棠4 小时前
6 高级配置:Spring Boot整合、泛化调用与配置指南
java·后端
云烟成雨TD4 小时前
Spring AI Alibaba 1.x 系列【58】Spring AI Alibaba Builtin Nodes 模块介绍
java·人工智能·spring