Play で同時実行を処理する方法に関するいくつかのチュートリアルを読み、いくつかの例を見つけました。
非同期ジョブ
import scala.concurrent.{ExecutionContext, future}
def sendEmailAsync(from: String, to: String, subject: String, body: String) = {
import ExecutionContext.Implicits.global // in scala.concurrent
future {
EmailHelper.sendEmail(from, to, subject, body)
}
}
スケジュールされたジョブ
import play.api.libs.concurrent.{Akka, Execution}
def sendEmailOnSchedule(from: String, to: String, subject: String, body: String) = {
import scala.concurrent.duration._
import Execution.Implicits.defaultContext // in play.api.libs.concurrent
Akka.system.scheduler.scheduleOnce(10 seconds) {
EmailHelper.sendEmail(from, to, subject, body)
}
}
さて、私は少し混乱しています...最初の例では を使用scala.concurrent.ExecutionContext.Implicits.global
し、2 番目の例では を使用していますplay.api.libs.concurrent.Execution.Implicits.defaultContext
。なんで?舞台裏で何が起こっているのか誰か説明してもらえますか?