为什么 Servlet 不是线程安全的? [复制]

2024-02-18

我需要知道为什么 servlet 不是线程安全的? Struts 2.0 框架控制器 servlet 是线程安全的原因是什么?


我需要知道为什么 servlet 不是线程安全的?

由于 Java 编程语言的多线程特性,Servlet 实例本质上不是线程安全的。 Java虚拟机支持通过多个线程执行相同的代码。这对于具有多个处理器的机器来说是一个巨大的性能优势。这也允许多个并发用户执行相同的代码,而不会互相阻塞。

想象一个有 4 个处理器的服务器,其中普通 servlet 每秒可以处理 1000 个请求。如果该 servlet 是线程安全的,那么 Web 应用程序的行为就好像它在具有 1 个处理器的服务器上运行一样,其中该 servlet 每秒只能处理 250 个请求(好吧,事实并非如此)exactly就像那样,但你明白了)。

如果您在使用servlet时遇到线程安全问题,那么就是your错误,而不是 Java 或 Servlet 的错误。您需要修复 servlet 代码,以便请求或会话范围的数据never分配为 servlet 的实例变量。有关深入的解释,另请参阅Servlet 如何工作?实例化、会话、共享变量和多线程 https://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-session-variables-and-multithreading/3106909#3106909.

Struts 2.0 框架控制器 servlet 是线程安全的原因是什么?

它不是线程安全的。您将 Struts 调度程序 servlet 过滤器与 Struts 操作混淆了。 struts 操作会根据每个请求重新创建。因此,每个请求都有其自己的请求范围 Struts 操作实例。 Struts 调度程序 servlet 过滤器不会将它们存储为自己的实例变量。相反,它将其存储为HttpServletRequest.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Servlet 不是线程安全的? [复制] 的相关文章

随机推荐

  • Excel公式如何连接字符串以供外部参考

    假设我在单元格中有以下公式 该公式从另一个工作簿读取单元格的值 c temp external book xlsx SheetX E 4 我想要的值c temp external book xlsx SheetX来自此工作表中的另一个单元格
  • 使用 Python 进行 Google-Forms 响应?

    我正在尝试编写一个 Python 脚本 它可以在 Google 表单中提交响应 如下所示 https docs google com forms d 152CTd4VY9pRvLfeACOf6SmmtFAp1CL750Sx72Rh6HJ8
  • 删除 GitLab 中的版本

    我在 GitLab 中发布的版本有问题 我在我的项目中用标签创建了它们 现在我想删除它们 所以我删除了关联的标签 但我的版本始终显示 我在 Google 和 Stack Overflow 上搜索 但找不到任何解决方案 如何删除这些没有标签的
  • TreeView 不显示存储在数据中的子项

    在我的程序中我有一个TreeView具有数据支持 视图模型和数据模型 添加到的每个项目TreeView添加一个子项 但由于某种原因 子项在运行时没有反映 但是 我可以在调试期间看到孩子们以及我的 孩子 属性TreeView s数据模型包括N
  • 我怎样才能得到联系人姓名和他/她的电话号码

    我正在尝试使用 Android 脚本和 Python 开发一个简单的应用程序 现在 我有一个电话号码 我想找出哪个联系人有该号码 我可以执行 contactGet 并搜索号码 但很多程序都使用该功能 我认为有一种更简单的方法 有一个同样的问
  • 如何在 Windows 8 METRO 应用程序中实现错误日志记录?

    您好 我正在开发一个 Windows 8 c xaml Metro 应用程序 我想在我的应用程序中实现错误日志记录 我想以更好的方式处理错误日志 1 如何记录错误信息 以便于开发者纠正错误 2 是否有任何第三方工具 免费库用于在 Metro
  • 当我手动更改 firebase 数据库中的值时,我在列表视图中创建更多项目,而不是更新列表视图中的值

    我不知道我的代码出了什么问题请帮助我 只是尝试检索数据以列表视图 我的 MainActivity java public class MainActivity extends AppCompatActivity ListView listV
  • jQuery 动画和属性值(以百分比表示)

    我试图为 div 制作动画 并尝试使用在其他地方检索到的一些值 我知道该值是正确的 因为我已经打印出了输出 所以我想知道为什么它不能正常工作 animateBar percentage toFixed 2 function animateB
  • Xamarin.Forms WidthRequest 值含义

    在 Xamarin Forms 中 以下属性获得双精度值 WidthRequest HeightRequest Padding Spacing 等 这个数字有什么意义呢 是像素还是其他 我在这些属性中输入的值是否会响应设备屏幕尺寸 考虑到多
  • 无法加载资源:net::ERR_BLOCKED_BY_RESPONSE [重复]

    这个问题在这里已经有答案了 我正在寻找 iframe 这个问题的一些解决方案 domain com 1 Refused to display domain com q node add editor in a frame because i
  • XML 属性可以有空格吗?

    我正在创建一个DTD http www xmlfiles com dtd 对于 xml 文档 我有一个枚举属性 http www xmlfiles com dtd dtd attributes asp对于 xml 元素 我的问题是 属性可以
  • Java:带状态的 ASCII 随机行文件访问

    是否有比创建满足以下条件的流文件读取器类更好的 预先存在的可选 Java 1 6 解决方案 给定一个任意大大小的 ASCII 文件 其中每行都以 n 对于某个方法的每次调用readLine 从文件中读取随机行 并且在文件句柄的生命周期内不会
  • JQuery 最佳实践,在 IIFE 中使用 $(document).ready?

    我正在看一段代码 function other code here document ready function other code here jQuery 我虽然 IIFE 执行 document ready 的功能 但这段代码正确吗
  • SQL Server - 条件语句的查询执行计划

    条件语句 例如如果别的 影响 SQL Server 2005 及更高版本 中的查询执行计划 条件语句是否会导致执行计划不佳 在考虑性能时是否需要警惕任何形式的条件 编辑添加 我特别指的是缓存的查询执行计划 例如 在下面的实例中缓存查询执行计
  • stringByAddingPercentEscapesUsingEncoding 转义的字符是什么?

    我不得不从 stringByAddingPercentEscapesUsingEncoding 切换到 CFURLCreateStringByAddingPercentEscapes 因为它不会转义问号 我很好奇它到底转义了什么 以及部分转
  • tee 和 script 本质上是等价的吗?

    在我想要捕捉的上下文中stdout文件中进程的一个 但仍希望在终端中显示此输出 我可以选择script and tee 在这种情况下 这些工具本质上是等效的 还是有一个 可能是微妙的 理由来选择其中一个而不是另一个 节目script and
  • 如何使用 MsBuild 创建可移植数据库?

    我想在我的解决方案中存储一个包含数据库创建脚本的项目 构建此项目时 它必须生成一个数据库文件 然后该数据库文件将在运行时供该解决方案的该项目和其他项目使用 怎么做 我知道我可以添加预构建任务 但我想知道 哪个命令行可以帮助我 也许 sqli
  • 使用 COM Interop 的 VB6 应用程序在 IDE 中工作正常,但编译后的 EXE 崩溃

    我目前正在开发一个 VB6 中的应用程序 该应用程序使用使用 NET 2 0 框架用 C 编写的 COM 互操作库 我使用 regasm exe 使用 codebase 开关从 NET dll 注册 tlb 文件 然后 我能够在 VB6 I
  • 如何在 Python 中为类型起别名?

    在某些 主要是函数式 语言中 您可以执行以下操作 type row list datum or type row datum 这样我们就可以构建这样的东西 type row datum type table row type databas
  • 为什么 Servlet 不是线程安全的? [复制]

    这个问题在这里已经有答案了 我需要知道为什么 servlet 不是线程安全的 Struts 2 0 框架控制器 servlet 是线程安全的原因是什么 我需要知道为什么 servlet 不是线程安全的 由于 Java 编程语言的多线程特性