並行流
注意: 在決定使用哪個 Stream
之前,請先看看 ParallelStream 與 Sequential Stream 的行為 。
如果要同時執行 Stream
操作,可以使用以下任一方法。
List<String> data = Arrays.asList("One", "Two", "Three", "Four", "Five");
Stream<String> aParallelStream = data.stream().parallel();
要麼:
Stream<String> aParallelStream = data.parallelStream();
要執行為並行流定義的操作,請呼叫終端運算子:
aParallelStream.forEach(System.out::println);
並行 Stream
的(可能的)輸出:
三
四個
一
兩
五
訂單可能會隨著所有元素並行處理而變化(這可能會使其更快)。訂購時使用 parallelStream
無關緊要。
績效影響
如果涉及網路,並行 Stream
s 可能會降低應用程式的整體效能,因為所有並行的 Stream
s 都使用公共的 fork-join 執行緒池來為網路服務。
另一方面,並行 Stream
s 可能會在許多其他情況下顯著提高效能,具體取決於此刻正在執行的 CPU 中可用核心的數量。