已解决
成功解决@Async注解不生效的问题,异步任务处理问题
来自网友在路上 173873提问 提问时间:2023-10-09 11:53:33阅读次数: 73
最佳答案 问答题库738位专家为你答疑解惑
首先,有这样一个异步监听方法
然后配置好了异步线程池
package com.fdw.study.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.ThreadPoolExecutor;@ComponentScan(basePackages = {"com.fdw.study.event", "com.fdw.study.eventListener"})
@Configuration
public class EventConfig {//自定义线程池@Beanpublic ThreadPoolTaskExecutor asyncThreadPoolExecutor() {ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();// 核心线程数taskExecutor.setCorePoolSize(4);// 线程池维护线程的最大数量,只有在缓冲队列满了之后才会申请超过核心线程数的线程taskExecutor.setMaxPoolSize(20);// 缓存队列taskExecutor.setQueueCapacity(50);// 空闲时间,当超过了核心线程数之外的线程在空闲时间到达之后会被销毁taskExecutor.setKeepAliveSeconds(200);// 异步方法内部线程名称taskExecutor.setThreadNamePrefix("fdw-async-executor-");/*** 当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize,如果还有任务到来就会采取任务拒绝策略* 通常有以下四种策略:* ThreadPoolExecutor.AbortPolicy:丢弃任务,抛出RejectedExecutionException异常。* ThreadPoolExecutor.DiscardPolicy:丢弃任务,但不抛出异常。* ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试重新执行任务。* ThreadPoolExecutor.CallerRunsPolicy:重试添加当前的任务,自动重复调用 execute() 方法,直到成功。*/taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());taskExecutor.initialize();return taskExecutor;}}
执行测试
package com.fdw.study.test;import com.fdw.study.config.EventConfig;
import com.fdw.study.event.UserChangePasswordEvent;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class EventTest {public static void main(String[] args) {ApplicationContext context = new AnnotationConfigApplicationContext(EventConfig.class);context.publishEvent(new UserChangePasswordEvent("145623"));}
}
发现还是走的main线程,没有实现异步
原因:后来发现是配置类缺少了@EnableAsync注解,加上后再测试
现在才是真的异步
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"成功解决@Async注解不生效的问题,异步任务处理问题":http://eshow365.cn/6-17774-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: Linux: 基础IO
- 下一篇: 浅谈安科瑞PZ系列多功能仪表在越南水电站的应用