参考了这篇文章:SpringBoot2.x整合线程池(ThreadPoolTaskExecutor)
https://www.jianshu.com/p/3d875dd9d5db
异步执行结果集处理及异常处理示例:
定义一个异步任务,在入参为3时模拟抛出异常的情况
@Log4j2
@Component
public class AsyncTest {
@Async("asyncServiceExecutor")
public Future<String> sync(int i) {
Date date = new Date();
try {
System.out.println("执行第"+i+"个");
Thread.sleep(1000);
} catch (InterruptedException e) {
log.error(e.getMessage(), e);
}
int error = 3;
if (i == error) {
throw new BaseException().setParam("No", i).setParam("Date", date);
}
return new AsyncResult<>(String.valueOf(i) + ": " + date.toString());
}
}
for循环创建多个异步任务,将结果放入list中,对list进行处理,使用get虽然会阻塞但不影响其他异步任务的执行。
@Log4j2
@RestController
@RequestMapping("/