У меня есть обслуживание на заказ Исполнитель:Run scalaz задачи на пользовательском пуле (ExecutorService)
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
?
Вы уверены, что он также работает в случае задач сцепленных с 'flatMap'? Я прочитал раздел «Конкуренция задач» от http://timperrett.com/2014/07/20/scalaz-task-the-missing-documentation/, и теперь я смущен. – mixel
В большинстве случаев 'Task' будет создан с' Task.now', 'Task.delay' или' Task.async' вместо 'Task.apply', поэтому не будет« прикрепленного »' ExecutionService' , Но в примере с вашими задачами задача будет выполняться в 'executeService', а не на том, который вы передадите' fork' yes (как упоминалось в этом разделе). –
Это не решит проблему. Основная задача по-прежнему выполняется в стандарте ExecutorService. – veegee