1

新手来了...

我有一个非常简单的可调用域对象集合。在使用期货时,我关心的是真正知道所有期货何时完成。

所以我正在创建一个期货集合,遍历我的域对象,创建一个未来(带有可调用对象)并将其添加到期货集合中。

假设可调用返回一个布尔值,我如何确定所有期货都已完成。

哦!我想等到这个集合被处理后再处理另一个集合,因为第二个集合过程依赖于第一个集合。

任何帮助表示赞赏。

不同的说法:我怎样才能等待数组的所有项目完成?我是否必须迭代并等待每个?

ArrayList<Future<Object>> responses = new ArrayList<Future<Object>>();

PS:在 JAVA 中编码并且对 PartialFunctions 等的使用也感到困惑,也许应用过滤器,计数和比较集合大小作为可能的解决方案......

4

2 回答 2

4

好的 - 通过执行以下操作解决了它:

Await.result(seq, Duration.create("5 seconds"));

在哪里

Future<Iterable<Boolean>> seq = Futures.sequence(futures, ec);

是期货的集合,futuresArrayList<Future<Boolean>>

于 2013-07-01T22:27:55.120 回答
1

本文为例:

Future<Iterable<Long>> futuresSequence = sequence(futures);

// block until the futures come back
Iterable<Long> results = futuresSequence.get();

您似乎正在尝试编写期货,但是您以错误的方式嵌套了您的集合和期货,以使其正常工作。尝试制作 a Futureof type Iterable,然后调用get这个未来。

于 2013-07-01T21:29:47.057 回答