gpt4 book ai didi

scala - 将 Java Future 转换为 Scala Future

转载 作者:行者123 更新时间:2023-12-03 22:59:45 26 4
gpt4 key购买 nike

我有一个 Java Future我想转换成 Scala Future 的对象.

看着j.u.c.Future API,除了 isDone 之外,我没有什么可以使用的了。方法。这是isDone方法阻塞?

目前这就是我的想法:

val p = Promise()
if (javaFuture.isDone())
p.success(javaFuture.get)

有一个更好的方法吗?

最佳答案

只是包装它怎么样(我假设这里有一个隐式 ExecutionContext ):

val scalaFuture = Future {
javaFuture.get
}

编辑:

一个简单的轮询策略可能如下所示(java.util.Future => F):
def pollForResult[T](f: F[T]): Future[T] = Future {
Thread.sleep(500)
f
}.flatMap(f => if (f.isDone) Future { f.get } else pollForResult(f))

这将检查 Java future 是否每 500 毫秒完成一次。显然,总阻塞时间与上面相同(四舍五入到最接近的 500 毫秒),但此解决方案将允许其他任务在 ExecutionContext 的同一线程中交错。 .

关于scala - 将 Java Future 转换为 Scala Future,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35033290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com