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