gpt4 book ai didi

Scala 死锁与并行集合

转载 作者:行者123 更新时间:2023-12-04 10:28:48 26 4
gpt4 key购买 nike

为什么以下代码会造成死锁:

object Test extends Application
{
def printProgress(i:Int) =
{
println("Processed " + i)
}

println("A")
(1 to 1000).par.foreach{ i =>
printProgress(i)
}
println("B")
}

(即 A 被打印,但 B 和任何 Processed ... 行都不会被打印。)

但是以下代码不会导致死锁:
object Test extends Application
{
println("A")
(1 to 1000).par.foreach{ i =>
println("Processed " + i)
}
println("B")
}

(即一切都被打印出来。)

我正在运行 Scala 版本 2.9.1.final。

最佳答案

可能是因为您扩展了 Application,而我不知道您的两个示例之间有何不同。

使用 Application,代码在方法之外执行 main , 在类初始化中。 JVM 在这一点上受到严重限制,特别是与多线程相关。不推荐使用应用程序,而支持应用程序,它具有一些魔法(特性 DelayedInit),导致代码在 main 中执行.所以object Test extends App应该修复它。

关于Scala 死锁与并行集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8005503/

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