Java @异步、未来、异步结果;“有什么方法?”;“等待”;异步函数的完成

Java @异步、未来、异步结果;“有什么方法?”;“等待”;异步函数的完成,java,spring-boot,asynchronous,Java,Spring Boot,Asynchronous,上下文:我对Spring非常陌生,以前从未使用过@Async。我被指示根据电子邮件中发送给我的示例代码复制部分代码 如果我要这样做,根据@async的文档和指南,我唯一能说的方法就是使用Future.isDone(),并且可能有一个列表,我可以在节点“完成”后从中删除节点,并在列表为空时继续 我想知道的是,是否有其他方法可以知道“未来”何时完成 在给我的示例代码中,没有任何地方有future.isDone()行 它们只是在发出异步请求后调用另一个函数,该函数使用for循环作为 for (Entr

上下文:我对Spring非常陌生,以前从未使用过@Async。我被指示根据电子邮件中发送给我的示例代码复制部分代码

如果我要这样做,根据@async的文档和指南,我唯一能说的方法就是使用Future.isDone(),并且可能有一个列表,我可以在节点“完成”后从中删除节点,并在列表为空时继续

我想知道的是,是否有其他方法可以知道“未来”何时完成

在给我的示例代码中,没有任何地方有future.isDone()行

它们只是在发出异步请求后调用另一个函数,该函数使用for循环作为

for (Entry<AClass, Future<String>> a : b.entrySet()) {
for(条目a:b.entrySet()){

“foreach”是否存在某种神奇的迭代器巫毒,或者可能有人给我的示例代码不完整,或者是否存在其他问题?

我相信您对
future.isDone()方法感到困惑

isDone它只会返回true或false

如果以任何方式完成,则返回true:正常、异常或通过取消

若要对Future对象执行操作,无需调用
Future.isDone()
并查看任务是否已完成

public T get() 抛出中断异常, ExecutionException(您应该看到此方法)

如有必要,等待此未来完成,然后返回其结果

抛出:

CancellationException-如果此期货已取消

ExecutionException-如果此未来异常完成

InterruptedException-如果当前线程在等待时被中断