scala – DynamicVariable无法使用Future
发布时间:2020-12-16 18:09:58 所属栏目:安全 来源:网络整理
导读:以下代码: import scala.concurrent.{Await,Future}import scala.concurrent.duration.Durationimport scala.util.DynamicVariableimport scala.concurrent.ExecutionContext.Implicits.globalobject Main { def main(args: Array[String]) = { val a = new
以下代码:
import scala.concurrent.{Await,Future} import scala.concurrent.duration.Duration import scala.util.DynamicVariable import scala.concurrent.ExecutionContext.Implicits.global object Main { def main(args: Array[String]) = { val a = new DynamicVariable(1) a.withValue(2) { println(a.value) Await.result(Future(println(a.value)),Duration.Inf) } } } 印刷: 2 1 但DynamicVariable依赖于在文档中说的InheritableThreadLocal:
这是否意味着InheritableThreadLocal实际上不起作用? 解决方法
可能我不正确,但它在我看来,在你的例子中,涉及的2个线程之间没有父/子关系.
运行Future的线程是导入的全局执行上下文中的一个线程.我认为这个执行上下文是在withValue的第二个参数中的thunk开始执行之前创建的. 因此,您提供的文档中的摘录可能不适用于此情况. 如果我错了,请纠正我,因为我还想更好地理解动态变量概念. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |