前言
SpringBoot中,@Async注解可以实现异步线程调用,用法简单,体验舒适。
但是你一定碰到过异步调用不生效的情况,今天,我就列出90%的人都可能会遇到的8大坑点。
正文
1、未启用异步支持
Spring Boot默认情况下不启用异步支持,确保在主配置类上添加
@EnableAsync
注解以启用异步功能。
java
复制代码
@SpringBootApplication @EnableAsync public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
2、没有配置线程池
如果没有显式地配置线程池,Spring Boot将使用默认的SimpleAsyncTaskExecutor实现。
在生产环境,可能导致性能问题。建议使用自定义的线程池配置,推荐
ThreadPoolTaskExecutor
。
java
复制代码
@Configuration @EnableAsync public class AsyncConfig implements AsyncConfigurer { @Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(10