Ich habe ein paar Tutorials zu lesen, wie mit Gleichzeitigkeit im Play beschäftigen und fand einige Beispiele:Concurrency in Play 2.1 oder höher
Asynchronous Job
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)
}
}
Geplanter Auftrag
Nun, ich bin ein bisschen verwirrt ... das erste Beispiel verwendet scala.concurrent.ExecutionContext.Implicits.global
während der zweites Beispiel verwendet play.api.libs.concurrent.Execution.Implicits.defaultContext
. Warum? Könnte mir jemand erklären, was hinter der Szene vor sich geht?
Der 'ExecutingContext' war so etwas wie der ExecutorService (Thread Pool) von Java, man kann ihn sogar selbst erstellen, wenn man möchte. Zum Beispiel verwendet das Play-Slick-Modul einen getrennten Kontext, um db-Operationen auszuführen. https://github.com/freechh/play-slick/blob/master/src/main/scala/play/api/db/slick/SlickExecutionContext.scala – jilen