gpt4 book ai didi

Scala Parallel Print 卡在控制台上

转载 作者:行者123 更新时间:2023-12-04 08:51:06 25 4
gpt4 key购买 nike

我是这个 Scala 世界的新手,我正在尝试书中的一些练习。因此,我有一个以顺序和并行方式打印向量的示例。前者工作完美,后者挂控制台。

代码

val v = Vector.range(0, 10)
v.foreach(println)

代码输出
0123456789

但是如果我使用相同的代码,而不是使用 foearch,而是使用 par,它会卡住控制台
val v = Vector.range(0,10)
v.par.foreach(println)

我正在使用的书说输出应该是这样的:
5678901234    

但它挂起,程序永远不会完成。

有人可以解释我为什么吗?

最佳答案

最好发布整个挂起的程序。

我刚刚用 Scala 2.12.8 和 jvm 1.8.0_161 对其进行了测试:

object MainClassss {
def main(args: Array[String]): Unit = {
val v = Vector.range(0,10)
(0 to 999999).foreach(_ => v.par.foreach(println))
}
}

该程序在输出方面运行良好,并没有挂起。

如果您的程序重现了上述问题,您需要通过以下方式进行线程转储:
$ jstack <PID>

其中 PID 是进程 ID。

或者您可以通过 jvisualvm jvm工具。

如果程序有一些代码阻止它执行,您可以分析为什么您的程序由于捕获的线程转储而被挂起。

关于Scala Parallel Print 卡在控制台上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42151322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com