当我这样做时:
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。