【问题标题】:Play Framework: Make Threadlocal consistent per request in Async actionsPlay Framework:在异步操作中使每个请求的 Threadlocal 一致
【发布时间】:2014-07-07 15:01:31
【问题描述】:

在 Play Framework 中,如果您的代码在 Future 中运行,它会从一个线程跳转到另一个线程。我有一个根据请求实例化的配置对象,需要存储在 Threadlocal 中。但是,当涉及 Future 时,Threadlocal 值不再一致。我们如何尝试使 Threadlocal 在请求的整个生命周期内保持一致,即使它在不同线程之间跳转?

谢谢

【问题讨论】:

  • 鉴于 Play 是无状态的,您应该真正避免这种全局状态。如果您确实需要全局的东西(例如数据库连接池),我建议您创建一个插件并将其放在那里:playframework.com/documentation/2.3.x/ScalaPlugins
  • 它不是真正的全局状态,它是每个请求的状态。如果每个请求都由单个线程处理,则使用 threadlocal 是有意义的。这里的问题是,对于异步请求,threadlocal 在请求的整个生命周期中并不一致。
  • 如果它是按请求的,为什么它需要存储在任何地方?只需将它传递给需要该对象的任何函数。隐式参数对此很有用。

标签: multithreading asynchronous playframework-2.0 thread-local


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多