之前连续写了几篇关于使用 @Async实现异步调用的内容,也得到不少童鞋的反馈,其中问题比较多的就是关于返回 Future的使用方法以及对异步执行的超时控制,所以这篇就来一起讲讲这两个问题的处理。
如果您对于 @Async注解的使用还不了解的话,可以看看之前的文章,具体如下:
- 使用@Async实现异步调用:自定义线程池
- 使用@Async实现异步调用:资源优雅关闭
定义异步任务
首先,我们先使用 @Async注解来定义一个异步任务,这个方法返回 Future类型,具体如下:
@Slf4j
@Component
public class Task {
public static Random random = new Random();
@Async("taskExecutor")
public Future run() throws Exception {
long sleep = random.nextInt(10000);
log.info("开始任务,需耗时:" + sleep + "毫秒");
Threa