我有自定义执行程序服务:
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
?
答案 0 :(得分:0)
可以使用Task.fork
:
返回一个
Task
,它产生与给定Future
相同的结果,但使用给定的ExecutorService
将其评估分支到一个单独的(逻辑)线程中。
val alienTask = Task.delay(5)
val myExecutorService = Executors.newSingleThreadExecutor()
val myTask = Task.fork(alienTask)(myExecutorService)