2013-05-13 3 views
5

기본적 풀 VS Akka 수영장 문서에 따르면, 배우를 사용하는 쉬운 방법은 다음과 같습니다재생이 스레드 풀 : 자바

약속 promiseOfInt = Akka.future (새 호출 가능() { 공개 정수 호출() { return ...; }});

그러나 Java API를 사용하면 항상 동일한 스레드 풀 (기본 스레드 풀 재생)이 사용됩니다.

설명서에는 배우 용 Akka 풀이 있다고 나와 있습니다. 일반 사용자 작업을 차단하지 않고이 액터 작업을 Akka 스레드 풀로 보내려면 어떻게해야합니까? 그래서 Akka 풀을 조정하고 기본 풀을 작게 유지할 수 있습니다.

감사합니다, 루이

+0

[스레드 풀 재생 문서] (http://www.playframework.com/documentation/2.1.1/ThreadPools)를 확인 했습니까? –

+0

예, 제가이 질문을 한 이유입니다. 저는 모호한데 액터 용 Akka 풀이 있지만 의사는 Java API를 사용하면 항상 동일한 스레드 풀 (기본 스레드 풀 재생)을 사용한다고 말합니다. – Loic

+1

사용자 정의 ExecutionContext (즉, 액터의 사용자 정의 풀)를 생성하고이를 사용하기 위해 Akka API를 직접 호출 할 수 있습니다. http://doc.akka.io/japi/akka/2.1.2/akka/dispatch/Futures.html #future (java.util.concurrent.Callable, scala.concurrent.ExecutionContext) 및 http://doc.akka.io/docs/akka/2.1.2/java/futures.html –

답변

1

앞으로 다시 응용 프로그램의 구성에 따라 새로운 배우 체제를 시작 스칼라 플러그인 (play.api.libs.Akka)에 자바 Akka 플러그인 (play.libs.Akka).

akka 구성 키를 기반으로하는 일반 application.conf 파일을 사용하여 해당 ActorSystem 및 모든 Dispatcher (Dispatcher도 ExecutionContext)를 구성하게됩니다. 이러한 디스패처는 문서에서 참조하는 스레드 풀입니다.

play.api.libs.concurrent.Execution.default을 가져올 때이 기본 스레드 풀인 이 사용됩니다. 스칼라 전용 API입니다. Java에서이 ExecutionContext는 사용자가 약속과 약속을 터치하자마자 자동으로 사용됩니다. 이 스레드 풀은 실제로 play 구성 키를 통해 구성된 Play의 내부 액터 시스템을 기반으로합니다.

요약하면 Akka 플러그인의 ActorSystem을 통해 생성 된 모든 액터는 자동으로 Akka 스레드 풀을 사용합니다 (액터 내에서 context.dispatcher을 사용하여 참조 할 수 있음).

외부 액터의 경우 Play의 기본/내부 스레드 풀을 사용하게됩니다.

+0

감사합니다. 이것은 매우 명확합니다! – Loic