Programing

미래를 위해 미세 조정 된 스레드 풀을 구성하는 방법은 무엇입니까?

lottogame 2020. 10. 18. 08:19
반응형

미래를 위해 미세 조정 된 스레드 풀을 구성하는 방법은 무엇입니까?


Scala의 선물 스레드 풀은 얼마나 큽니까?

내 Scala 애플리케이션은 수백만 개의 future {}s를 생성하며 스레드 풀을 구성하여 최적화 할 수있는 방법이 있는지 궁금합니다.

감사합니다.


전역 암시 적 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) {}
}

이 답변은 수락 된 답변의 의견 인 monkjack의 것입니다. 그러나이 훌륭한 답변을 놓칠 수 있으므로 여기에 다시 게시하고 있습니다.

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

스레드 풀 수만 변경해야하는 경우 전역 실행기를 사용하고 다음 시스템 속성을 전달하면됩니다.

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

스칼라 선물에서 스레드 풀을 지정하는 가장 좋은 방법 :

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

참고 URL : https://stackoverflow.com/questions/15285284/how-to-configure-a-fine-tuned-thread-pool-for-futures

반응형