在不同的会话中使用相同的Threadlocal

时间:2018-08-30 08:19:38

标签: java session thread-local

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

1 个答案:

答案 0 :(得分:3)

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

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


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