如果异步方法中的任何一个线程遇到异常,是否可以立即中断所有其他线程的执行?该方法返回一个completableFuture对象。
@Async("asyncTaskExecutor")
public CompletableFuture<String> updateOp(String department,List<Student> student,Boolean flag)
{
....
....
return departmentId;
}
此异步方法由另一个服务类方法调用:
public List<String> updateDepartments
{
....
....
try {
List<CompletableFuture<String>> futures = new ArrayList<>();
for (String department: departmentList) {
CompletableFuture<String> departmentId= updateAsyncService.updateOp(department,studentList,statusflag);
futures.add(departmentId);
}
CompletableFuture.allOf(futures.toArray(new CompletableFuture[futures.size()])).join();
for (CompletableFuture<String> future : futures) {
departmentIdList.add(future.get());
}
} catch (Exception e) {
logger.error(e);
}
return departmentIdList;
}
以上方法异步地在各个部门运行。现在,如果任何部门的更新操作失败(运行updateOp时任何线程发生异常),我希望所有线程停止执行。
此外,在这种情况下,我将如何检索updateOp成功运行于哪些部门,从而基本上获得那些部门ID的列表。 感谢您的任何事先帮助。