2013-04-26 93 views
3

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

所以我希望得到的东西像 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

使用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()); 
+1

对不起,downvote。我的胖子在手机上发现了它,除非你编辑它,否则我现在似乎无法改变它。如果你编辑你的评论,我会为你升级它。再次抱歉。 – cmbaxter 2013-04-26 23:29:31

+0

不用担心和感谢您的解释。 – Tilo 2013-04-26 23:30:37