先物用の Scala のスレッドプールの大きさは?
私の Scala アプリケーションは何百万future {}
もの を作成しており、スレッド プールを構成することでそれらを最適化するためにできることはないかと考えています。
ありがとうございました。
先物用の Scala のスレッドプールの大きさは?
私の Scala アプリケーションは何百万future {}
もの を作成しており、スレッド プールを構成することでそれらを最適化するためにできることはないかと考えています。
ありがとうございました。
この回答はモンクジャックからのもので、受け入れられた回答からのコメントです。ただし、この素晴らしい回答を見逃す可能性があるため、ここに再投稿します。
implicit val ec = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10))
スレッド プール カウントを変更する必要があるだけの場合は、グローバル エグゼキュータを使用して、次のシステム プロパティを渡すだけです。
-Dscala.concurrent.context.numThreads=8 -Dscala.concurrent.context.maxThreads=8
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();
}
class ThreadPoolExecutionContext(val executionContext: ExecutionContext)
object ThreadPoolExecutionContext {
val executionContextProvider: ThreadPoolExecutionContext = {
try {
val executionContextExecutor: ExecutionContextExecutor = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(25))
new ThreadPoolExecutionContext(executionContextExecutor)
} catch {
case exception: Exception => {
Log.error("Failed to create thread pool", exception)
throw exception
}
}
}
}