为不同的会话获得相同的Threadlocal

问题描述 投票:1回答:1

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

java session thread-local
1个回答
3
投票

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

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


而是将每个会话所需的数据存储在HttpServletRequest.getSession()中。

© www.soinside.com 2019 - 2024. All rights reserved.