¿Cómo configurar un grupo de subprocesos afinado para futuros?

¿Qué tan grande es el grupo de hilos de Scala para futuros?

Mi aplicación Scala genera muchos millones de future {} s future {} y me pregunto si hay algo que pueda hacer para optimizarlos configurando un grupo de subprocesos.

Gracias.

Puede especificar su propio ExecutionContext en el que se ejecutará su futuro, en lugar de importar el ExecutionContext global implícito.

 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) {} } 

Esta respuesta es de monkjack, un comentario de la respuesta aceptada. Sin embargo, uno puede perder esta gran respuesta, así que la vuelvo a publicar aquí.

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

Si solo necesita cambiar el recuento de grupos de subprocesos, simplemente use el ejecutor global y pase las siguientes propiedades del sistema.

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

La mejor forma de especificar threadpool en Scala Futures:

 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(); }