2017-03-28 1 views

답변

2

당신은 여기에서 답을 찾을 수 있습니다

Play's internal execution context

그 질문이 완료되지 중복하지만 아주 가까운,뿐만 아니라 질문을 다루가 답이다. 짧은에서

:

당신은 플레이에 import scala.concurrent.ExecutionContext.Implicits.global를 사용하지 않아야합니다. 주석

대답에서 인용에

응답 :

대신 이 ActorSystem을 사용하는, play.api.libs.concurrent.Execution.Implicits.defaultContext 사용할 수 있습니다.

scala.concurrent.ExecutionContext.Implicits.global은 스칼라 표준 라이브러리에 정의 된 ExecutionContext입니다. 특수 ForkJoinPool은 차단 방법을 사용하여 잠재적으로 코드를 차단하여 풀에 새 스레드를 생성합니다. Play 응용 프로그램에서 Play를 사용하지 않아야합니다. 따라서 Play에서는 을 제어 할 수 없습니다. 또한주의하지 않으면 많은 스레드를 생성하고 많은 양의 메모리를 사용할 수 있습니다.

+0

내가 링크에서 이해하는 것은 Play의 컨텍스트가 Play에서 내부적으로 사용되므로 사용해서는 안된다는 것입니다. 따라서 스칼라의 실행 컨텍스트를 사용해야한다. (당신이 말하는 대답이 아니다.) – ps0604

+0

제발, 업데이트를보고, 나는 당신이 그것을 다르게 이해하는지 확신하지 못한다. –

0

일반적으로 메서드 또는 클래스 내에 ExecutionContext이 필요하면 암시 적 매개 변수 (Scala) 또는 일반 매개 변수 (Java)로 지정해야합니다. Convention은이 매개 변수를 마지막에 넣는 것입니다.

이 규칙은 호출자/작성자가 비동기 효과가 평가되는 위치/방법 /시기를 제어 할 수있게합니다.

이 규칙의 주 예외는 이미 ExecutionContext인데 발신자/작성자가 효과 평가 대상을 제어하지 않기를 바랍니다.

관련 문제