What is the difference between “Future.successful(

2019-03-17 06:22发布

Future.apply starts an asynchronous computation whereas Future.successful creates an already completed Future with the specified result.

Now is Future(None) (Future.apply(None)) less efficient than Future.successful(None)?

标签: scala future
2条回答
Fickle 薄情
2楼-- · 2019-03-17 07:08

I don't think that Future(None) gives a big overhead, but still in it's default implementation each call to apply spawns a new task for a ForkJoin thread pool, whereas Future.successful(None) completes immediately. And each call to map or flatMap on the future creates a new task for the poll, which also gives some overhead, so you might want to take a look at scalaz Future/Task implementation which handles such details more carefully.

查看更多
啃猪蹄的小仙女
3楼-- · 2019-03-17 07:19

Future.apply(None) creates asynchronous computation and executes it. It means that extra lambda object is created and extra task is scheduled (however trivial task).

Future.successful(None) just produces already completed future. It is more efficient.

查看更多
登录 后发表回答