并行流

注意: 在决定使用哪个 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 无关紧要。

绩效影响

如果涉及网络,并行 Streams 可能会降低应用程序的整体性能,因为所有并行的 Streams 都使用公共的 fork-join 线程池来为网络服务。

另一方面,并​​行 Streams 可能会在许多其他情况下显着提高性能,具体取决于此刻正在运行的 CPU 中可用内核的数量。