为什么以下代码会造成死锁:
object Test extends Application
{
def printProgress(i:Int) =
{
println("Processed " + i)
}
println("A")
(1 to 1000).par.foreach{ i =>
printProgress(i)
}
println("B")
}
Run Code Online (Sandbox Code Playgroud)
(即A打印,但既不打印B也不打印任何Processed ...行.)
但是,以下代码不会导致死锁:
object Test extends Application
{
println("A")
(1 to 1000).par.foreach{ i =>
println("Processed " + i)
}
println("B")
}
Run Code Online (Sandbox Code Playgroud)
(即一切都被打印出来.)
我正在运行Scala版本2.9.1.final.
Did*_*ont 13
可能是因为你扩展了Application,而我无法分辨你的两个例子之间的区别.
使用Application,代码main在类初始化的方法之外执行.此时JVM受到严重限制,特别是与多线程相关.不推荐应用程序支持App,它有一些魔法(trait DelayedInit)导致代码被执行main.所以object Test extends App应该修复它.
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |