在這個例子中,執行上下文用於處理未來。爲什麼ScalikeJdbc在具有線程池時需要執行上下文?
爲什麼Scalike有內置的連接池時會使用它?
不應該使用其中一個池線程執行嗎? ForkJoin加入線程似乎是一種真正的浪費,只是爲了等待Future而另一個線程完成IO的工作。
http://scalikejdbc.org/documentation/transaction.html
object FutureDB {
implicit val ec = myOwnExecutorContext
def updateFirstName(id: Int, firstName: String)(implicit session: DBSession): Future[Int] = {
Future {
blocking {
session.update("update users set first_name = ? where id = ?", firstName, id)
}
}
}
def updateLastName(id: Int, lastName: String)(implicit session: DBSession): Future[Int] = {
Future {
blocking {
session.update("update users set last_name = ? where id = ?", lastName, id)
}
}
}
}
object Example {
import FutureDB._
val fResult = DB futureLocalTx { implicit s =>
updateFirstName(3, "John").map(_ => updateLastName(3, "Smith"))
}
}
Example.fResult.foreach(println(_))
這是有道理的。謝謝。 – BAR