相关疑难解决方法(0)

Scala:对象初始化程序中的并行收集导致程序挂起

我刚刚注意到一种令人不安的行为.假设我有一个由单个对象组成的独立程序:

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.

scala scala-collections

17
推荐指数
1
解决办法
1970
查看次数

标签 统计

scala ×1

scala-collections ×1