Comment configurer un pool de threads affiné pour les futures?

Quelle est la taille du pool de threads de Scala pour les futures?

Mon application Scala compte des millions de future {} s à future {} et je me demande si je peux faire quelque chose pour les optimiser en configurant un pool de threads.

Je vous remercie.

    Vous pouvez spécifier votre propre ExecutionContext dans lequel vos futures seront exécutées, au lieu d’importer le global implicite ExecutionContext.

     import java.util.concurrent.Executors import scala.concurrent._ implicit val ec = new ExecutionContext { val threadPool = Executors.newFixedThreadPool(1000); def execute(runnable: Runnable) { threadPool.submit(runnable) } def reportFailure(t: Throwable) {} } 

    Cette réponse provient de monkjack, un commentaire de la réponse acceptée. Cependant, on peut rater cette excellente réponse, donc je la republie ici.

     implicit val ec = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10)) 

    Si vous devez simplement modifier le nombre de pools de threads, utilisez simplement l’exécuteur global et transmettez les propriétés système suivantes.

     -Dscala.concurrent.context.numThreads=8 -Dscala.concurrent.context.maxThreads=8 

    meilleure façon de spécifier threadpool dans les futurs scala:

     implicit val ec = new ExecutionContext { val threadPool = Executors.newFixedThreadPool(conf.getInt("5")); override def reportFailure(cause: Throwable): Unit = {}; override def execute(runnable: Runnable): Unit = threadPool.submit(runnable); def shutdown() = threadPool.shutdown(); }