2013-04-26 74 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