代码之家  ›  专栏  ›  技术社区  ›  FredMan

@异步、未来、异步结果;有哪些方法可以“等待”异步函数的完成

  •  0
  • FredMan  · 技术社区  · 7 年前

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

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

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

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

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ryuzaki L    7 年前

    我相信你对这件事感到困惑 future.isDone()

    伊斯通 它只会返回true或false

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

    若要对将来的对象执行操作,则无需调用 future.isDone() 并查明任务是否已完成

    公共部门得不到 执行例外 (您应该看到此方法)

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

    CancellationException-如果此期货已取消

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