我正在阅读一些关于Java servlet中属性范围的servlet文本。在文中,作者写道:
“Session attributes are officially not thread safe.
”
这使我感到困惑,因为我认为一个用户只有一个特定的会话,没有人可以访问其他用户。如果是这样,会话属性是线程安全的。或者我误解了什么?
答案 0 :(得分:5)
这使我感到困惑,因为我认为一个用户只有一个特定的会话,没有人可以访问其他用户。如果是这样,会话属性是线程安全的。
好吧,如果是这种情况,会话属性不一定是线程安全的。这与说它们是线程安全的不同。
如果您有多个线程同时处理同一用户的会话,则缺少线程安全可能会成为问题。也许您从主请求工作线程中生成了一些并行执行。或者同一个用户多次访问服务器(例如同时加载五个帧)。
答案 1 :(得分:2)
会话属性不是thread safe
。
从此文件(Java theory and practice: Are all stateful Web applications broken?)
当Web应用程序存储可变会话数据(如购物)时 在HttpSession中购物车,两个请求可能会尝试 同时访问购物车。几种失败模式 是可能的,包括:
1。原子性失败,其中一个线程是 更新多个数据项,另一个线程读取数据 他们处于不一致的状态。 a之间的可见性失败 读取线程和写入线程,其中一个线程修改 购物车,但另一个看到购物车的陈旧或不一致的状态 内容
查看来自coderanch
;