在自定义池(ExecutorService)上运行scalaz任务

时间:2016-05-06 13:39:46

标签: scala scalaz

我有自定义执行程序服务:

val executorService = Executors.newSingleThreadExecutor()

我有任务:

val tasks = Task(1).flatMap { i =>
    Task(i + 1)
}

我知道我可以将executorService传递给每项任务:

val tasks = Task(1)(executorService).flatMap { i =>
     Task(i + 1)(executorService)
}

但是,如果这些任务是从某个库返回的,并且不是由我的代码创建的,那该怎么办呢?

如何使用tasks运行executorService

1 个答案:

答案 0 :(得分:0)

可以使用Task.fork

完成此操作
  

返回一个Task,它产生与给定Future相同的结果,但使用给定的ExecutorService将其评估分支到一个单独的(逻辑)线程中。

val alienTask = Task.delay(5)
val myExecutorService = Executors.newSingleThreadExecutor()
val myTask = Task.fork(alienTask)(myExecutorService)