ich einen benutzerdefinierten Testamentsvollstrecker Service habe:Run scalaz Aufgaben auf individuellen Pool (ExecutorService)
val executorService = Executors.newSingleThreadExecutor()
Und ich habe Aufgaben:
val tasks = Task(1).flatMap { i =>
Task(i + 1)
}
Ich weiß, dass ich executorService
jede Aufgabe passieren kann:
val tasks = Task(1)(executorService).flatMap { i =>
Task(i + 1)(executorService)
}
Aber was ist, wenn diese Aufgaben von einer Bibliothek zurückgegeben werden und nicht von meinem Code erstellt werden. Wie kann ich tasks
mit executorService
ausführen?
Sind Sie sicher, dass es funktioniert auch bei Aufgaben mit 'flatMap' gekettet? Ich las "Aufgabe Gleichzeitigkeit" Abschnitt von http://timperrett.com/2014/07/20/scalaz-task-the-missing-documentation/ und jetzt bin ich verwirrt. – mixel
Meistens wird eine 'Task' mit' Task.now', 'Task.delay' oder' Task.async' anstelle von 'Task.apply' erstellt, so dass kein" angehängter "' ExecutionService' vorhanden ist . Aber in Ihrem "Aufgaben" -Beispiel wird die Aufgabe auf dem "executionService" ausgeführt und nicht auf dem, den Sie an "fork" yes übergeben würden (wie in diesem Abschnitt erwähnt). –
Dies löst das Problem nicht. Die zugrunde liegende Task wird weiterhin im Standard ExecutorService ausgeführt. – veegee