java - Servlet 是单例的设计原则是什么

标签 java multithreading servlets singleton design-principles

<分区>

Possible Duplicate:
Why is (javax.servlet.)SingleThreadModel deprecated?

servlet 容器“通常”创建一个 servlet 实例和同一实例的不同线程来服务多个请求。 (我知道这可以使用已弃用的 SingleThreadModel 和其他功能进行更改,但这是通常的方法)。

我认为,这背后的简单原因是性能提升,因为创建线程比创建实例更好。不过好像不是这个原因。 另一方面,创建实例没有什么好处,开发人员永远不必担心线程安全。

我试图理解做出这个权衡线程安全的决定的原因。

最佳答案

这是关于性能的。如果没有状态,就没有锁定,也没有争用。 Servlet 是基本的构建 block ,在该级别构建关于状态的假设并不是一个好主意。

servlet 只是一种表达方式,容器收到了这个请求,这是应用程序对其执行操作的机会。任何关于需要什么样的状态性的假设都可能对某些类型的应用程序有利,而对其他应用程序不利,因此 servlet 将赌注押在了这一点上。如果有一个通用的设计原则在起作用,那就是让一些东西足够简单以便普遍有用。

关于java - Servlet 是单例的设计原则是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11247459/

相关文章:

java - Java中基于Request在后台运行servlet

javascript - 在包中运行 Javascript 和 Servlet 代码

java - 基本 request.getParameter 不起作用

c# - 同时多次调用api的最佳方法是什么?

java - 如何强制自动生成正向 hibernate 主键

java - 从 Java 中的数组构建树结构(用于目录)

单声道android的Java反射

java - 有没有更理想的发送绘图命令的方式?

Android 线程与异步任务

java - 从字符串中提取年份并在其前面加上前缀 20