我已经向具有两个浏览器的Spring MVC项目发送了相同的请求,但是我得到了相同的threadlocal,因此threadlocal中的实例是相同的,为什么?
Threadlocal 绑定到线程/进程,而不是会话。JVM并不真正了解或关心Web会话的概念,这是一个更高层次的抽象。
具有两个会话的两个 Web 请求很可能由同一线程处理。大多数服务器使用它们重用的线程池,而不是为每个请求甚至会话创建一个新线程。如果第一个请求的处理在处理完请求后在 threadlocal 中留下了一些东西,那么,这就是下一个请求将在那里找到的内容。
将每个会话需要保留的数据存储在 HttpServletRequest.getSession(( 中。