并行流
注意: 在决定使用哪个 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 中可用内核的数量。