如何让scala的Future在当前线程上运行?

时间:2016-04-29 07:38:02

标签: scala future

我将scala.concurrent.ExecutionContext.Implicits.global用于Future的所有执行者。但是有时候,我做了一些简单的事情,只是想让它不改变线程(不把它放到线程池中),让它继续在当前线程下运行。使用有Future的twitter Future.value来实现这一目标。在scala的未来怎么做?

2 个答案:

答案 0 :(得分:3)

你可以这样做:

Future.fromTry(Try { ... })

它不需要ExecutionContext,基本上只是立即评估表达式并在将来包装结果。

实际上,这是它的实施:

def fromTry[T](result: Try[T]): Future[T] = Promise.fromTry(result).future

所以这似乎与Twitter的Future.value直接相似。

如果您的代码没有引发任何异常,请考虑使用Future.successful;如果您想创建已经失败的未来,请考虑使用Future.failed

答案 1 :(得分:1)

scala标准库中twitter的Future.value的等效值为Future.successful

Future.constFuture.fromTry

Future.exceptionFuture.failed