のためにプレイして、将来の暗黙的なコンテキストの定義:スカラ座が提供する将来の実行コンテキストに加えて、Scalaの
import scala.concurrent.ExecutionContext.Implicits.global
プレイは、別の実行コンテキストを提供します。
のためにプレイして各を使用する
import play.api.libs.concurrent.Execution.Implicits.defaultContext
スカラ?
のためにプレイして、将来の暗黙的なコンテキストの定義:スカラ座が提供する将来の実行コンテキストに加えて、Scalaの
import scala.concurrent.ExecutionContext.Implicits.global
プレイは、別の実行コンテキストを提供します。
のためにプレイして各を使用する
import play.api.libs.concurrent.Execution.Implicits.defaultContext
スカラ?
あなたはここで答えを見つけることができます。
Play's internal execution context
をその質問には完全な複製が、非常に近接していない、とそこに答えは同様にあなたの質問をカバーしています。要するに
:
あなたはプレイ中import scala.concurrent.ExecutionContext.Implicits.global
を使用してはなりません。
応答引用
コメントへの回答から:
代わりに、あなたは が
ActorSystem
を使用する、play.api.libs.concurrent.Execution.Implicits.defaultContext
を使用します。
scala.concurrent.ExecutionContext.Implicits.global
は、Scala標準ライブラリで定義されているExecutionContext
です。 特別なForkJoinPool
は、ブロックメソッドを使用して、プール内に新しいスレッドを生成するために潜在的にブロックコードである を処理することがあります。 Playアプリケーションではこれを使用しないでください。これは、Playが を制御しないためです。また、多くの スレッドを生成し、慎重でない場合は、1トンのメモリを使用する可能性があります。
通常、メソッドまたはクラスの内部にExecutionContext
が必要な場合は、それを暗黙のパラメータ(Scala)または通常のパラメータ(Java)として指定する必要があります。条約はこのパラメータを最後に置くことです。
このルールは、呼び出し元/作成者が非同期効果が評価される場所/方法/時期を制御できるようにします。
このルールの主な例外は、すでにExecutionContext
があり、呼び出し元/作成者がエフェクトの評価先を制御したくない場合です。
私がこのリンクから理解していることは、PlayのコンテキストはPlayの内部で使用されているため、使用しないことです。したがって、私はScalaの実行コンテキスト(あなたが私に言っている答えではありません)を使用するべきです。 – ps0604
更新を見てください、私はあなたがそれをどう違って理解するのか分かりません –