Multithreading 如何并行运行Scalaz任务

Multithreading 如何并行运行Scalaz任务,multithreading,scala,parallel-processing,scalaz,Multithreading,Scala,Parallel Processing,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(" ")) val tasks=for(iTask.delay挂起对其参数的求值,但它

我有一大堆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(" "))

val tasks=for(i
Task.delay
挂起对其参数的求值,但它没有说明求值将发生在何处。您需要
Task.apply
,它具有相同的签名,只是它采用隐式
ExecutorService
,该服务将决定求值将发生在哪个线程中:

import scalaz.Nondeterminism, scalaz.concurrent.Task

val tasks = for (i <- 1 to 50) yield {
  Task {
    Thread.sleep(100L)
    println(i)
    i
  }
}

val r = Nondeterminism[Task].gatherUnordered(tasks).run
println(r.mkString(" "))
导入scalaz.Nondeterminism,scalaz.concurrent.Task
val任务=用于(i)