首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >servlet的使用比struts2中的操作类更好吗?

servlet的使用比struts2中的操作类更好吗?
EN

Stack Overflow用户
提问于 2012-11-02 22:12:29
回答 1查看 1K关注 0票数 3

众所周知,Servlets为各自的请求使用单独的线程,这提高了服务器的效率。然而,在struts2框架中,每个映射的操作-类都为各自的请求创建了自己的对象。

现在,与普通servlet中的线程相比,在struts2中拥有单独的对象是一个很好的实践(优化)吗?为什么我们不直接吃servlets呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-02 22:28:28

当请求传入web容器时,容器从池中获取线程以执行请求。一旦处理了请求,线程就会返回到池中,以便用于后续请求。可以并行处理多个请求,因为池有多个可用的线程。

web应用程序中声明的每个servlet仅由web容器实例化一次。因此,多个并发线程使用每个servlet的单个实例。这就是为什么您的servlet必须是线程安全的。

Struts不会改变上面的任何内容。它所做的就是定义一个处理所有请求的servlet或过滤器。对于针对给定操作路径的每个请求,将创建一个新的Struts实例。这就是servlet模型的不同之处。servlet是一个单例(所有请求只有一个实例),而每个请求都实例化了一个新Struts操作。

其优点是操作不需要线程安全,因为它只被一个线程使用,然后被丢弃。它可以包含中间状态而不需要任何同步。缺点是创建了许多实例。但是,由于Java垃圾收集器在回收短期对象(如Struts操作)方面非常快速,因此在实践中不会造成任何问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13203731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档