Ho letto un paio di tutorial su come affrontare la concorrenza in gioco e ha trovato alcuni esempi:concorrenza in Play 2.1 o superiore
Asynchronous lavoro
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)
}
}
Lavoro pianificato
Beh, sono un po 'confuso ... il primo esempio utilizza scala.concurrent.ExecutionContext.Implicits.global
mentre il il secondo esempio utilizza play.api.libs.concurrent.Execution.Implicits.defaultContext
. Perché? Qualcuno potrebbe spiegarmi cosa sta succedendo dietro la scena?
Il file "ExecutingContext" era simile a ExecutorService di java (Pool di thread), puoi persino crearlo da solo, se lo desideri. Ad esempio, il modulo play-slick usa un contesto separato per eseguire le operazioni db. https://github.com/freekh/play-slick/blob/master/src/main/scala/play/api/db/slick/SlickExecutionContext.scala – jilen