我已经阅读了一些关于如何在 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
,而第二个示例使用play.api.libs.concurrent.Execution.Implicits.defaultContext
. 为什么?有人可以解释一下幕后发生的事情吗?