异步任务的坑
Spring Boot 中编写异步任务
两个注解:
- @EnableAsync:开启当前项目的异步功能
![1673349495471-7da91ddf-de95-4de5-836b-ebb0f7d167f5.png]()
- @Async:当前方法标记为异步方法
注意一个规则:有没有返回值。
没有返回值的例子:

返回值实现了 Future 接口:

下

异步任务的线程池配置
默认情况下,异步任务的线程池是怎么配置的,是否满足我们的需求呢?
配置线程池参数
默认是启动下面的线程池:

线程池对应的自动配置类如下:

可以使用下面的参数配置异步任务线程池相关的参数:


异步任务返回超时
对于异步任务有返回的情况,如果获取结果超时怎么办呢?
get 有重载方法可以设置超时的时间,超时之后就会抛出 TimeOut 异常:

没有返回值的异步任务抛异常
对于异步任务没有返回的情况(有返回的直接 get 的时候就会抛异常),但是下面的异步任务执行的时候抛出异常,但是没有任何的其他返回:

Spring 默认的异步任务异常处理器,会将对应的异常打印到日志里面:

自定义异步线程池和异常处理器

自定义异步线程池的实现:


自定义异常处理器

posted on 2025-10-14 23:47 chuchengzhi 阅读(7) 评论(0) 收藏 举报

浙公网安备 33010602011771号