如何让 scala 的 Future 运行 在当前线程上?
how to let scala's Future running on the current thread?
我对 Future 的所有执行者都使用 scala.concurrent.ExecutionContext.Implicits.global
。但有时,我做了一件简单的事情,只是希望它不改变线程(不把它放入线程池),让它在当前线程下继续 运行。使用 twitter Future
其中有一个 Future.value
来实现这一点。 scala的未来怎么办?
你可以这样做:
Future.fromTry(Try { ... })
它不需要 ExecutionContext
并且基本上只是立即计算表达式并在将来包装结果。
实际上,这是它的实现:
def fromTry[T](result: Try[T]): Future[T] = Promise.fromTry(result).future
所以这似乎是 Twitter Future.value
的直接模拟。
如果您的代码不抛出任何异常,也可以考虑使用 Future.successful
,或者如果您想创建已经失败的未来,请考虑使用 Future.failed
。
在 scala 标准库中 twitter 的 Future.value
等价于 Future.successful
.
Future.const
是 Future.fromTry
Future.exception
是 Future.failed
我对 Future 的所有执行者都使用 scala.concurrent.ExecutionContext.Implicits.global
。但有时,我做了一件简单的事情,只是希望它不改变线程(不把它放入线程池),让它在当前线程下继续 运行。使用 twitter Future
其中有一个 Future.value
来实现这一点。 scala的未来怎么办?
你可以这样做:
Future.fromTry(Try { ... })
它不需要 ExecutionContext
并且基本上只是立即计算表达式并在将来包装结果。
实际上,这是它的实现:
def fromTry[T](result: Try[T]): Future[T] = Promise.fromTry(result).future
所以这似乎是 Twitter Future.value
的直接模拟。
如果您的代码不抛出任何异常,也可以考虑使用 Future.successful
,或者如果您想创建已经失败的未来,请考虑使用 Future.failed
。
在 scala 标准库中 twitter 的 Future.value
等价于 Future.successful
.
Future.const
是 Future.fromTry
Future.exception
是 Future.failed