【发布时间】:2016-01-21 12:35:35
【问题描述】:
我在另一篇文章中读到,经过调查发现,anyMatch 终端操作的工作方式是每个线程(在子流上操作)定期检查其他线程是否找到结果,如果是,则所有其他线程都停止了。
我假设,但想知道是否有人可以验证noneMatch 和allMatch 是否也以这种方式运行,因此如果在运行noneMatch 时,一个线程找到了实际匹配,那么该操作可以返回false。那么所有其他线程是否以与anyMatch 相同的方式定期检查这一点?同样,逆向适用于allMatch?
此外,我想知道在并行运行filter 和map 操作时,它们是在有序流上运行还是在无序流上运行有什么区别。在有序流上,我认为最合乎逻辑的好处就是不同的线程可以处理创建的每个子流,然后以相同的顺序将它们全部合并在一起。对于一个无序的流,这对我难以想象的操作有什么好处吗?
【问题讨论】:
标签: performance parallel-processing java-8 java-stream behavior