私はちょうど不自然な動作に気づいた。 のは、私が唯一のオブジェクトからなるスタンドアロンのプログラムがあるとしましょう:Scala:オブジェクトイニシャライザの並列コレクションにより、プログラムがハングする
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ないときは、次の出力で、適切に実行されます:
ループ内:1
を行います並列コレクションを使用している場合
こう何か
ループ内側:2
が何か
は残念ながら、プログラムは単に今までのdoSomethingメソッドを呼び出さずにハングアップするので、出力は次のとおりです。ループ内
:2
ループ内側:1
そして、プログラムがハングします。
これは単なる厄介なバグですか?私はscala-2.10を使用しています。
関連:http:// stackoverflow。com/questions/27549671/java-static-initializersの診断やデッドロックのデッドロック – Rich