在并行集合上调用.seq是否能确保所有线程都被连接



我有一个集合,我称之为.par,如下所示:

myCollection.par.map(element => longRunningOperation(element)).seq
println("after map")

在调用println之前,调用.seq是否保证所有线程在继续之前都被连接,并完成所有映射?

一旦调用map操作,工作线程就会启动。在map操作完成之前,它们都被框架连接起来。当你调用seq的时候,已经没有工作线程在运行了。

会的。实际上,您不需要在最后调用.seq

回答这类问题的简单方法是记住,在没有副作用的情况下,并行集合与非并行集合具有完全相同的语义。除非longRunningOperation中的代码有明显的副作用,否则您能够判断代码正在并行运行的唯一方法是检查处理器利用率。

相关内容

  • 没有找到相关文章

最新更新