Stream.of("AAA","BBB","CCC").parallel().forEach(s->System.out.println("Output:"+s));Stream.of("AAA","BBB","CCC").parallel().forEachOrdered(s->System.out.println("Output:"+s));
第二行将始终输出
Output:AAAOutput:BBBOutput:CCC
而第一个不保证,因为不保留顺序。
forEachOrdered将按照其源指定的顺序处理流的元素,而不管该流是顺序的还是并行的。
引用
forEachJavadoc:
该 *** 作的行为明确地是不确定的。对于并行流管道,此 *** 作不能保证尊重流的遇到顺序,因为这样做会牺牲并行性的好处。
当
forEachOrderedJavadoc声明时(强调我的意思):
如果流具有已定义的遇到顺序,则按流 的遇到顺序 对此流的每个元素执行 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)