IntStream,我什么时候应该真正使用sequential()方法



当我这样做时:

IntStream i = IntStream.of(5,6,7,1,2,3,4);
//IntStream o =  i.sequential();
i.forEach(System.out::println);

无论我是否调用顺序,我都会得到相同的响应。那么 sequential(( 方法的用例是什么。

假设我在多核机器上处理数百万个整数,除非我调用 sequential((,否则 jvm 是否有可能尝试并行处理?

例如,当您有并行流时:

IntStream i = IntStream.of(5, 6, 7, 1, 2, 3, 4);
i.parallel();
i = i.sequential();
i.forEach(System.out::println);

Wil 始终返回 5, 6, 7, 1, 2, 3, 4 但是当你删除 i.sequential(( 时,你可以得到其他结果,因为它是并行运行的。

IntStream.of的 javadoc 中所述,该方法返回一个顺序流。因此,sequential方法不会有任何效果。

在官方文档中了解有关顺序流和并行流的更多信息:https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html。

相关内容

最新更新