JAVA使用@Async 注解后执行报错 :org.springframework.core.task.TaskRejectedException: Executo[Running, pool size = 5, active threads = 5, ]] aop.interceptor.AsyncExecutionInterceptor

 

org.springframework.core.task.TaskRejectedException: Executor [java.util.concurrent.ThreadPoolExecutor@31e1ddbc[Running, pool size = 5, active threads = 5, queued tasks = 10, completed tasks = 45]] did not accept task: org.springframework.aop.interceptor.AsyncExecutionInterceptor$$Lambda$960/1248130858@7a0c0aa3

这个是因为执行的数量超过@Async 注解的数量了,

 

建一个配置类 声明线程池

复制代码
@Configuration
public class SpringAsyncConfig {

    @Bean
    public Executor asyncTaskExecutor() {
        // 创建线程池
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        executor.setCorePoolSize(5); // 设置核心池大小
        executor.setMaxPoolSize(10); // 设置最大池大小,只有在缓冲队列满了之后才会申请超过核心线程数的线程
        executor.setQueueCapacity(100); // 设置队列容量
        executor.setKeepAliveSeconds(60); // 设置保持活动秒数,当超过了核心线程数之外的线程在空闲时间到达之后会被销毁
        executor.setThreadNamePrefix("async-"); // 设置线程名称前缀
        // 设置拒绝的执行处理策略
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        return executor;
    }

}
复制代码

 

然后方法执行的使用调用

@Async("asyncTaskExecutor")
    public void sync() {
       
        log.info("异步执行逻辑");
       
}

 

posted @   yvioo  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2021-01-21 Spring Boot全局异常处理
2020-01-21 Linux(centos7)安装redis并设置redis开机自启动
2020-01-21 linux(centos)系统安装activemq
2020-01-21 Linux查看防火墙对应的开放端口以及进行端口操作(centos和ubantu系统)
点击右上角即可分享
微信分享提示