我正在尝试使用Akka Futures读取多个文件并将每一行传递给可调用的。 我的callables是特定文件的解析器。所以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();
我如何构建它以在我的未来对象中获取它。欢迎任何建议。
谢谢!
答案 0 :(得分:4)
使用Futures.sequence
方法从Future<Iterable<Person>>
创建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());