首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Servlet背后的设计原则是什么?

Servlet背后的设计原则是什么?
EN

Stack Overflow用户
提问于 2012-06-28 15:01:36
回答 2查看 347关注 0票数 1

可能重复: Why is (javax.servlet.)SingleThreadModel deprecated?

servlet容器“通常”创建一个servlet实例和同一个实例的不同线程,以服务多个请求。(我知道可以使用不推荐的SingleThreadModel和其他特性来改变这一点,但这是通常的方法)。

我想,这背后的简单原因是性能提高,因为创建线程比创建实例要好。但这似乎不是原因。另一方面,创建实例几乎没有开发人员不必担心线程安全的优势。

我正试图理解这一决定的原因,在线程安全的权衡上。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-28 15:17:29

请注意,SingleThreadModel并不能解决所有线程安全问题。例如,会话属性和静态变量仍然可以由多个线程上的多个请求同时访问,即使在使用SingleThreadModel servlet时也是如此。建议开发人员采取其他方法解决这些问题,而不是实现该接口,例如避免使用实例变量或同步访问这些资源的代码块。

更多信息请参考this thread

票数 1
EN

Stack Overflow用户

发布于 2012-06-28 15:08:45

这是关于表演的。如果没有状态,就没有锁定和争用。Servlet是基本的构建块,在这个级别上构建关于状态的假设不是一个好主意。

servlet只是一种说法,容器收到了这个请求,这是应用程序对它做一些事情的一个机会。任何关于需要什么样的状态的假设都可能对某些应用程序有利,而对其他应用程序可能不利,因此servlet会对此进行讨论。如果有一个通用的设计原则在工作,它是保持一些足够简单,以使一般有用。

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

https://stackoverflow.com/questions/11247459

复制
相关文章

相似问题

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