2013-06-04 3 views
2

В настоящее время мы используем:Каков самый эффективный способ запуска фьючерсов в scala?

val simpleOps: ExecutionContext = Akka.system(app).dispatchers.lookup("akka.actor.simple-ops") 

Тогда мы неявным импортировать это, когда мы создаем и создавать наше будущее. Помимо этого мы в настоящее время не используем Akka.

Есть более простые способы получить ExecutionContext, но я не уверен, что он будет запущен через Java Fork/Join Pool, который немного более эффективен, чем обычный Java ExecutorService.

Является ли Akka единственным способом получить FJP с помощью ExecutionContext? Есть ли другие способы получить ExecutionContext, которые настолько же эффективны, что Akka FJP MessageDispatcher?

ответ

4

Фьючерсы Scala уже используют ForkJoinPool под капотом (в частности, они используют специальную вилку Scala java's ForkJoinPool).

См https://github.com/scala/scala/blob/v2.10.1/src/library/scala/concurrent/impl/ExecutionContextImpl.scala#L1

В частности, обратите внимание, что DefaultThreadFactory расширяет ForkJoinPool.ForkJoinWorkerThreadFactory:

class DefaultThreadFactory(daemonic: Boolean) extends ThreadFactory with ForkJoinPool.ForkJoinWorkerThreadFactory 
+0

Круто, спасибо за réponse. Вы все еще видите какую-либо возможность использовать диспетчеров Akka для этого? –

+1

Если вы просто используете Futures, то, вероятно, не –

Смежные вопросы