Как указать службу выполнения для будущих обратных вызовов в Twitter Util?

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

и это объяснение: https://twitter.github.io/finagle/guide/Futures.html но оно показывает мне, как создать новое будущее из пула, которого я хочу избежать, поскольку я начинаю с обещания.

0 ответов

Другие вопросы по тегам