Java 8流类上的不确定性foreach

时间:2018-07-09 12:30:29

标签: java-8 java-stream

Java文档介绍了Stream类上的forEach方法:

  

此操作的行为明确地是不确定的。

所以我了解的是,即使源具有encouter顺序,在相同源上重复执行顺序(而不是并行)的相同流管道,也可能会产生不同的结果。那正确吗?有人可以给我一个例子来说明这一点吗?

1 个答案:

答案 0 :(得分:2)

管道内部的元素可以彼此独立地并行处理(请参见Parallelism条目),因此使各个元素进行的中间操作可能会有所不同-因此,如果终端操作为在以并行模式工作的流上调用。

它也可能取决于流所源自的数据源(例如HashSet)和两者之间的中间操作-请参见Ordering条目。

检查是否有任何中间操作引入并行性myStream.isParallel() == true或中断顺序myStream.unordered()