我有一个包含此导入的scala文件
import scala.concurrent.ExecutionContext.Implicits.global
这很好用,因为我使用的Future
在我的文件中的方法中运行正常。但是,我创建了一个单独的方法,用于磁盘IO,我有一个新的执行上下文。我希望此方法使用此上下文,而其他方法可以继续使用默认上下文。我该如何保证?我目前这样做如下
private def testContext():Future[Int] = {
val system = ActorSystem.create()
implicit val myexecutionContext = system.dispatchers.lookup("blocking-io-dispatcher.db-backup-context")
Future{logger.error("inside my new thread pool wonderland");10}{myexecutionContext}
有没有办法在每个Future调用结束时没有像这样指定“myexecutionContext”,我可以让这个方法仍然使用“myexecutionContext”进行所有Future调用吗?简而言之,我不想一次又一次地将“myexecutionContext”指定为我的“testContext”方法中的参数。我该怎么做?
答案 0 :(得分:3)
您不需要在myexecutionContext
内指定testContext()
。 myexecutionContext
在testContext()
内定义,优先于在方法外部导入的global
上下文。 Future
中创建的所有testContext()
默认情况下都会使用myexecutionContext
。