项目需要实现操作异步调用,直接上代码:
@ApiOperation("执行操作")
@PutMapping("/xxxx")
public ResultBody approval(@RequestBody @Validated Param param) {
try {
//逻辑处理
....
Future<Object> result = this.service.do(param);
//阻塞上面的方法执行,时间不超过2秒
result.get(2, TimeUnit.SECONDS);
//逻辑处理
....
}catch (TimeoutException e) {
log.error("异常:",e);
}catch (Exception e){
log.error("异常:",e);
}
return ResultBody.success()
}
/*
异步调用service中方法,注意使用方法异步注解
*/
@Async
public Future<Object> do(Param param{
//逻辑处理,
...
return new AsyncResult<>(null);
}

该博客展示了在Java中如何使用@Async注解实现异步调用,并通过Future.get()方法进行超时控制。在服务层,对异步方法进行了详细处理,当调用遇到TimeoutException或其他异常时,提供了日志记录。此示例对于理解Java异步编程和错误处理具有指导意义。
2520

被折叠的 条评论
为什么被折叠?



