如果可能的話,我應該總是使用并行流嗎?使用Java 8和lambda,可以很容易地將集合作為流來迭代,而且使用并行流也同樣容易。兩個例子醫(yī)生,第二個使用并行流:myShapesCollection.stream()
.filter(e -> e.getColor() == Color.RED)
.forEach(e -> System.out.println(e.getName()));myShapesCollection.parallelStream() // <-- This one uses parallel
.filter(e -> e.getColor() == Color.RED)
.forEach(e -> System.out.println(e.getName()));只要我不關(guān)心順序,使用并行總是有益的嗎?人們可能會認為,在更多的核心上劃分工作會更快。還有其他考慮嗎?什么時候應該使用并行流,什么時候應該使用非平行流?(這個問題被要求引發(fā)關(guān)于如何和何時使用并行流的討論,而不是因為我認為總是使用它們是個好主意。)
3 回答

慕田峪7331174
TA貢獻1828條經(jīng)驗 獲得超13個贊
我有大量的項目要處理(或者每個項目的處理需要時間,并且是可并行的) 我一開始就有表演問題 我還沒有在多線程環(huán)境中運行進程(例如:在web容器中,如果我已經(jīng)有許多請求并行處理,那么在每個請求中添加一個額外的并行層可能會產(chǎn)生更多的負面影響而不是積極的影響)。
System.out.println()
添加回答
舉報
0/150
提交
取消