【发布时间】:2018-08-30 08:19:38
【问题描述】:
我用两个浏览器向一个Spring MVC项目发送了同样的请求,但是我得到了相同的threadlocal,所以threadlocal中的实例是一样的,为什么?
【问题讨论】:
-
可能是因为您在处理请求后没有正确清除它们?
标签: java session thread-local
我用两个浏览器向一个Spring MVC项目发送了同样的请求,但是我得到了相同的threadlocal,所以threadlocal中的实例是一样的,为什么?
【问题讨论】:
标签: java session thread-local
Threadlocal 绑定到线程/进程,而不是会话。 JVM 并不真正了解或关心 Web 会话的概念,这是更高级别的抽象。
很可能有两个会话的两个 Web 请求由同一个线程处理。大多数服务器使用他们重用的线程池,而不是为每个请求甚至会话创建一个新线程。如果第一个请求的处理在处理完请求后在 threadlocal 中留下了一些东西,那么这就是下一个请求将在那里找到的东西。
将您需要在每个会话中保留的数据存储在 HttpServletRequest.getSession() 中。
【讨论】: