在Scala中,如果我知道一段代码在Future中运行,有没有办法找出Future所在的ExecutionContext?例如,我可以将这些信息写入日志。
不要担心,我不想做任何邪恶的事情。我只想要调试信息。答案 0 :(得分:2)
Viktor Klang在评论中说:
任何合理的ExecutionContext都应该适当地命名它的线程, 然后它使用Thread.currentThread()。getName()。
显示在日志中
我认为这正是我所需要的。
谢谢,Viktor!
答案 1 :(得分:1)
不清楚你想要什么,但如果你想在implicit
上下文中获得Future
变量,你可以这样做:
def main(args: Array[String]): Unit = {
helloWorld()
fooBar()
}
def fooBar(): Unit = {
import scala.concurrent.ExecutionContext.Implicits.global
Future {
println(implicitly[ExecutionContext].hashCode())
"foo bar"
}
}
def helloWorld(): Unit = {
implicit val ec = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10))
Future {
println(implicitly[ExecutionContext].hashCode())
"Hello World"
}
}
使用implicitly类型implicit
来获取implicit
变量。