Я не понимаю, как я могу указать определенную службу выполнения из Java, такую как пул потоков, для выполнения моего обратного вызова в будущем.Например, у меня может быть цепочка операций отображения:
val executionService = java.util.concurrent.Executors.newSingleThreadExecutor()
val twitterExecutor = com.twitter.util.FuturePool.apply(executionService)
val p = com.twitter.util.Promise.apply[Int]
val r = p.map(t => t + 1).map(t => t + 1).map(t => t + 1)
// Do something else ...
// This could also happen from another thread:
p.updateIfEmpty(Return(10))
com.twitter.util.Await.ready(p)
Как я могу указать начальную службу выполнения twitterExecutor
, которая будет использоваться для обратных вызовов, и как я могу изменить службу выполнения для одного map
обратный звонок?В стандартной библиотеке Scala я могу указать неявный контекст выполнения.Я не хочу создавать будущее, которое уже завершено, но завершить его позже через обещание.
Я нашел только этот вопрос: https://groups.google.com/forum/#!topic/finaglers/ovDL2UFKoDw, где в ответе предлагается использовать flatMap
, но яЯ хочу избежать возвращения нового будущего при каждом обратном вызове.
и это объяснение: https://twitter.github.io/finagle/guide/Futures.html, но оно показывает мне, как создать новое будущее из пула, которого я хочу избежать, поскольку я начинаю собещание.