HttpSession中是否可以使用HashMap存储共享数据?
Can we use HashMap to store shared data in HttpSession?
我们正在使用 HashMap 将数据存储在 HttpSession (Jetty) 中。
我们不同步放置和获取。
是否有可能一个请求将数据放入 Map 而另一个请求在 Map 中看不到该数据,因为它们来自不同的线程(Jetty 线程池)?
也许我们必须使用ConcurrentHashMap?
您必须确保您存储在会话中的整个对象的状态在不同线程之间是一致的。
仅将 HashMap
替换为 ConcurrentHashMap
可能还不够。
ConcurrentHashMap
唯一能确保的是 'happens before' 行为将对存储在映射中的值和键强制执行。
我们正在使用 HashMap 将数据存储在 HttpSession (Jetty) 中。 我们不同步放置和获取。 是否有可能一个请求将数据放入 Map 而另一个请求在 Map 中看不到该数据,因为它们来自不同的线程(Jetty 线程池)?
也许我们必须使用ConcurrentHashMap?
您必须确保您存储在会话中的整个对象的状态在不同线程之间是一致的。
仅将 HashMap
替换为 ConcurrentHashMap
可能还不够。
ConcurrentHashMap
唯一能确保的是 'happens before' 行为将对存储在映射中的值和键强制执行。