我如何保证我不使用默认/全局隐式上下文

时间:2017-09-03 01:38:26

标签: scala akka future

我有一个包含此导入的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”方法中的参数。我该怎么做?

1 个答案:

答案 0 :(得分:3)

您不需要在myexecutionContext内指定testContext()myexecutionContexttestContext()内定义,优先于在方法外部导入的global上下文。 Future中创建的所有testContext()默认情况下都会使用myexecutionContext