How to configure a fine tuned thread pool for futures? How to configure a fine tuned thread pool for futures? multithreading multithreading

How to configure a fine tuned thread pool for futures?


This answer is from monkjack, a comment from the accepted answer. However, one can miss this great answer so I'm reposting it here.

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

If you just need to change the thread pool count, just use the global executor and pass the following system properties.

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


You can specify your own ExecutionContext that your futures will run in, instead of importing the global implicit ExecutionContext.

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


best way to specify threadpool in 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();    }