Как указать службу выполнения для будущих обратных вызовов в Twitter Util? - PullRequest
0 голосов
/ 10 октября 2018

Я не понимаю, как я могу указать определенную службу выполнения из 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, но оно показывает мне, как создать новое будущее из пула, которого я хочу избежать, поскольку я начинаю собещание.

...