복붙노트

[SCALA] 어떻게 미래를위한 미세 조정 스레드 풀을 구성하는 방법?

SCALA

어떻게 미래를위한 미세 조정 스레드 풀을 구성하는 방법?

미래에 대한 스칼라의 스레드 풀 크기는 얼마입니까?

내 스칼라 응용 프로그램은 미래의 {}의 수백만을하고 내가 스레드 풀을 구성하여이를 최적화하기 위해 할 수있는 일이 있는지 궁금하다.

감사합니다.

해결법

  1. ==============================

    1.대신 글로벌 암시의 ExecutionContext를 가져 오는, 당신의 미래가에서 실행됩니다 자신의 ExecutionContext를 지정할 수 있습니다.

    대신 글로벌 암시의 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. ==============================

    2.이 답변 monkjack, 허용 대답에서 코멘트에서입니다. 내가 여기 다시 게시거야 그래서 그러나, 하나는이 위대한 대답을 놓칠 수 있습니다.

    이 답변 monkjack, 허용 대답에서 코멘트에서입니다. 내가 여기 다시 게시거야 그래서 그러나, 하나는이 위대한 대답을 놓칠 수 있습니다.

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

    그냥 스레드 풀 카운트를 변경해야하는 경우, 바로 글로벌 실행기를 사용하여 다음과 같은 시스템 속성을 전달합니다.

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

    3.가장 좋은 방법은 스칼라 선물에 스레드 지정합니다 :

    가장 좋은 방법은 스칼라 선물에 스레드 지정합니다 :

    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();
        }
    
  4. from https://stackoverflow.com/questions/15285284/how-to-configure-a-fine-tuned-thread-pool-for-futures by cc-by-sa and MIT license