
在最初的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());
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)