81

先物用の Scala のスレッドプールの大きさは?

私の Scala アプリケーションは何百万future {}もの を作成しており、スレッド プールを構成することでそれらを最適化するためにできることはないかと考えています。

ありがとうございました。

4

4 に答える 4

157

この回答はモンクジャックからのもので、受け入れられた回答からのコメントです。ただし、この素晴らしい回答を見逃す可能性があるため、ここに再投稿します。

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

スレッド プール カウントを変更する必要があるだけの場合は、グローバル エグゼキュータを使用して、次のシステム プロパティを渡すだけです。

-Dscala.concurrent.context.numThreads=8 -Dscala.concurrent.context.maxThreads=8
于 2014-06-11T23:04:42.677 に答える
3

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();
    }
于 2015-08-24T05:32:26.647 に答える
0
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
      }
    }
  }
}
于 2020-05-29T10:57:23.633 に答える