У меня есть набор задач Scalaz. Создано вот так:Как запускать задачи Scalaz параллельно
val tasks = for (i <- 1 to 50) yield {
Task.delay({
Thread.sleep(100L)
println(i)
i
})
}
val r = Nondeterminism[Task].gatherUnordered(tasks).run
println(r.mkString(" "))
Я ожидал бы, что задачи будут выполняться параллельно. Чтобы печатать цифры в произвольном порядке и не принимать 5 секунд (в каждой из них 50 задач и 100 миллисекундов).
Однако ясно, что каждая задача занимает 100 миллисекунд, все они занимают 5 секунд и упорядоченный список упорядочен.
Как запустить их параллельно? Где Task выполняет поток для запуска?