【问题标题】:Got the same Threadlocal for different sessions为不同的会话获得相同的 Threadlocal
【发布时间】:2018-08-30 08:19:38
【问题描述】:

我用两个浏览器向一个Spring MVC项目发送了同样的请求,但是我得到了相同的threadlocal,所以threadlocal中的实例是一样的,为什么?

【问题讨论】:

  • 可能是因为您在处理请求后没有正确清除它们?

标签: java session thread-local


【解决方案1】:

Threadlocal 绑定到线程/进程,而不是会话。 JVM 并不真正了解或关心 Web 会话的概念,这是更高级别的抽象。

很可能有两个会话的两个 Web 请求由同一个线程处理。大多数服务器使用他们重用的线程池,而不是为每个请求甚至会话创建一个新线程。如果第一个请求的处理在处理完请求后在 threadlocal 中留下了一些东西,那么这就是下一个请求将在那里找到的东西。


将您需要在每个会话中保留的数据存储在 HttpServletRequest.getSession() 中。

【讨论】:

    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 2012-05-19
    • 2012-01-30
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    相关资源
    最近更新 更多