Multithreading 如何并行运行Scalaz任务
我有一大堆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挂起对其参数的求值,但它
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
挂起对其参数的求值,但它没有说明求值将发生在何处。您需要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)