我想分析多個文件以提取所需數據,然後將輸出寫入XML
文件。我用Callable Interface
來實現這個。我的同事要求我使用Java 8
功能,可以輕鬆完成這項工作。我真的很困惑我們現在應該使用哪一個。並行化(Java 8)與併發(Java 7)
list.parallelStream().forEach(a -> {
System.out.println(a);
});
我想分析多個文件以提取所需數據,然後將輸出寫入XML
文件。我用Callable Interface
來實現這個。我的同事要求我使用Java 8
功能,可以輕鬆完成這項工作。我真的很困惑我們現在應該使用哪一個。並行化(Java 8)與併發(Java 7)
list.parallelStream().forEach(a -> {
System.out.println(a);
});
使用併發性或並行流只有在您有獨立的任務需要處理時纔會有所幫助。一個很好的例子是什麼時候你不會這樣做,就是你鎖定共享資源,例如
// makes no sense to use parallel here.
list.parallelStream().forEach(a -> {
// locks System.out so only one thread at a time can do any work.
System.out.println(a);
});
然而,作爲一般的問題,我會用parallelStream用於處理數據,而不是併發庫直接因爲;
恕我直言鑑於使用並行編碼確實會有所幫助的機會很低,parallelStream
的最佳功能並不是增加多麼簡單,而是多麼簡單。
如果您有難以建模爲數據流的臨時工作,併發庫會更好。例如用於客戶端請求的工作池可能更簡單,可以使用ExecutorService實現。
謝謝你的回答。我會用parallelStream去。 – user3136136
@ user3136136嘗試它,如果它沒有幫助,請將其切換回流。 –
你可以發佈你的'Callable'的代碼嗎? –
使用並行流不知道它的優缺點沒有任何意義,IMO。 –
看起來像您的XML的結果輸出順序可能會與並行處理有點不確定。 – Thilo