Akka期货清单 - 如何等待期货清单完成?

时间:2013-07-01 21:18:08

标签: java akka

新手在这里......

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

因此,我正在创建一个期货集合,迭代我的域对象,创建未来(使用可调用的)并将其添加到期货集合中。

假设callable返回一个布尔值,我怎样才能确定所有的期货都已完成。

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

任何帮助表示感谢。

不同地说明: 我如何等待阵列的所有项目完成?我是否必须迭代并等待每一个?

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

PS:JAVA中的编码以及使用PartialFunctions等时的混淆,或许应用过滤器,计算和比较集合大小作为可能的解决方案......

2 个答案:

答案 0 :(得分:4)

好的 - 通过执行以下操作解决了这个问题:

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

其中

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

futures是期​​货的集合,即ArrayList<Future<Boolean>>

答案 1 :(得分:1)

this article

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

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

看起来你正在尝试撰写期货,但你已经错误地嵌套了你的收藏和期货,以使其正常运作。请尝试改为Future类型为Iterable,然后在此未来调用get