在并行流上顺序调用使所有先前的 *** 作顺序

在并行流上顺序调用使所有先前的 *** 作顺序,第1张

并行流上顺序调用使所有先前的 *** 作顺序

在最初的Stream
API设计中,将流从切换

parallel()
sequential()
工作,但引起了许多问题,最终实现被更改,因此它只是打开和关闭整个管道的并行标志。当前文档确实含糊不清,但是在Java-9中进行了改进:

根据在其上调用终端 *** 作的流的模式,顺序或并行执行流管道。可以使用该

baseStream.isParallel()
方法确定流的顺序或并行模式,并可以使用
baseStream.sequential()
baseStream.parallel()
*** 作修改流的模式。最新的顺序或并行模式设置适用于整个流管道的执行。

对于您的问题,您可以将所有内容收集到中间层

List
并启动新的顺序管道:

new Random().ints(100).boxed()        .parallel()        .map(this::slowOperation)        .collect(Collectors.toList())        // Start new stream here        .stream()        .map(Function.identity())//some fast operation, but must be in single thread        .collect(Collectors.toSet());


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5133977.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存