В этом примере контекст выполнения используется для обработки будущего.Почему ScalikeJdbc требует контекста выполнения, когда он имеет пул потоков?
Почему это используется, когда Scalike имеет встроенный пул соединений?
Не должно ли будущее использовать один из потоков пулов для выполнения? Похоже, это настоящая трата для ForkJoin, чтобы просто ждать в Будущем, в то время как другая нить работает 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