3

我正在尝试使用 Akka Futures 读取多个文件并将每一行传递给一个可调用对象。我的可调用对象是特定文件的解析器。因此 people.txt 可能会填充 Person 类型的对象。每行可以包含超过 50 个字段,每个字段都需要验证和操作来填充对象。

所以我想得到类似的东西 Future <Iterable<Person>>,但不知道我是怎么得到的

BufferedReader reader = new BufferedReader(
    new InputStreamReader(getInputStream(), "UTF-16"));

while((line = reader.readLine()) != null) {
    // call callable here for each line
    // PersonParser that implements Callable<Person>
}
reader.close();

我如何构造它以在我未来的对象中得到它。欢迎任何建议。

谢谢!

4

1 回答 1

4

使用该Futures.sequence方法Future<Iterable<Person>>从 a 创建 a Iterable<Future<Person>>

List<Future<Person>> personFutures = new ArrayList<Future<Person>>();
BufferedReader reader = 
    new BufferedReader(new InputStreamReader(getInputStream(), "UTF-16"));

while((line = reader.readLine()) != null) {
   PersonParser parser = new PersonParser(line);
   personFutures.add(Futures.future(parser, system.dispatcher()));
}
reader.close();

Future<Iterable<Person>> personsFuture = 
    Futures.sequence(personFutures, system.dispatcher()); 
于 2013-04-26T22:48:47.730 回答