我刚刚注意到一个令人不安的行为。假设我有一个由一个对象组成的独立程序:
object ParCollectionInInitializerTest {
def doSomething { println("Doing something") }
for (i <- (1 to 2).par) {
println("Inside loop: " + i)
doSomething
}
def main(args: Array[String]) {
}
}
该程序是完全无辜的,当 for 循环中使用的范围不是并行范围时,它可以正确执行,输出如下:
内部循环:1
做某事
内部循环:2
做某事
不幸的是,当使用并行集合时,程序只是挂起,没有调用 doSomething 方法,所以输出如下:
内循环:2
内循环:1
然后程序挂起。
这只是一个讨厌的错误吗?我正在使用 scala-2.10。