В моем приложении Scala много миллионов future {}, и мне интересно, есть ли что-нибудь, что я могу сделать, чтобы оптимизировать их, настроив пул потоков.
Спасибо.
Ответ 1
Вы можете указать свой собственный ExecutionContext, в котором будут работать ваши фьючерсы, вместо импорта глобального неявного 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) {}
}
Ответ 2
Этот ответ от monkjack, комментарий от принятого ответа. Тем не менее, можно пропустить этот отличный ответ, поэтому я переписываю его здесь.
implicit val ec = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10))
Если вам просто нужно изменить счет пула потоков, просто используйте глобальный исполнитель и передайте следующие системные свойства.