【问题标题】:why Session attributes are officially not thread safe in Servlet?为什么 Session 属性在 Servlet 中正式不是线程安全的?
【发布时间】:2011-11-25 16:46:49
【问题描述】:

我正在阅读一些关于 Java servlet 中属性范围的 servlet 文本。在文中,作者写道: "Session attributes are officially not thread safe."

这让我很困惑,因为我认为一个用户只有一个特定的会话,没有人可以访问其他用户。如果是这样,会话属性是线程安全的。还是我误会了什么??

【问题讨论】:

    标签: session servlets attributes


    【解决方案1】:

    这让我很困惑,因为我认为一个用户只有一个特定的会话,没有人可以访问其他用户。如果是这样,会话属性是线程安全的。

    好吧,如果是这样的话,会话属性不需要是线程安全的。这与说它们是线程安全的不同。

    如果您有多个线程同时处理同一个用户的会话,则缺乏线程安全性可能是个问题。也许您从主请求工作线程产生了一些并行执行。或者同一个用户多次访问服务器(比如同时加载五帧)。

    【讨论】:

    • “多个线程处理同一个用户的请求”- 同一个浏览器多个选项卡来制作差异。请求,每个请求都会有一个差异。由容器创建/分配的线程。
    【解决方案2】:

    会话属性不是thread safe

    来自此文档 (Java theory and practice: Are all stateful Web applications broken?)

    当 Web 应用程序存储可变会话数据时,例如购物 HttpSession 中的购物车,两个请求可能会尝试 同时访问购物车。几种故障模式 是可能的,包括:
    1。原子性失败,其中一个线程 更新多个数据项,另一个线程读取数据,同时 他们处于不一致的状态
    2。之间的可见性失败 读线程和写线程,其中一个线程修改 购物车,但对方看到购物车的状态陈旧或不一致 内容

    看看coderanch的帖子;

    1. How HttpSession is not thread safe
    2. Are Session thread safe.

    【讨论】:

      猜你喜欢
      • 2012-03-22
      • 2014-06-22
      • 2012-05-02
      • 2012-11-20
      • 2013-10-11
      • 2020-10-10
      • 1970-01-01
      • 2016-08-14
      • 2023-03-12
      相关资源
      最近更新 更多