Я только что заметил тревожное поведение. Допустим, у меня есть отдельная программа, состоящая из единственного объекта:
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.