如何在Twitter Util中为将来的回调指定执行服务?

时间:2018-10-10 16:14:06

标签: scala promise future 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/#!topic/finaglers/ovDL2UFKoDw,答案建议使用flatMap,但我想避免在每个回调中返回新的未来。

以及以下说明:https://twitter.github.io/finagle/guide/Futures.html 但是它向我展示了如何从一个池中创建一个新的未来,因为我从一个承诺开始,所以我想避免这个池。

0 个答案:

没有答案