Java 每个请求是否访问相同的servlet对象?

Java 每个请求是否访问相同的servlet对象?,java,http,servlets,request,Java,Http,Servlets,Request,每个HTTP请求是否在不同的线程中访问相同的servlet对象?还是创建新线程和新Servlet实例?每个HTTP请求创建一个新线程,但访问Servlet的同一实例 编辑:对于一个服务器节点,您将在该节点上拥有相同的Servlet实例。在负载平衡/多个服务器的情况下,通常每个Java VM都有一个实例。如果servlet没有实现SingleThreadModel,容器将使用相同的servlet实例。 否则,不能保证命中相同的Servlet对象。如果容器认为有必要,它可以自由创建更多的servle

每个HTTP请求是否在不同的线程中访问相同的servlet对象?还是创建新线程和新Servlet实例?

每个HTTP请求创建一个新线程,但访问Servlet的同一实例


编辑:对于一个服务器节点,您将在该节点上拥有相同的Servlet实例。在负载平衡/多个服务器的情况下,通常每个Java VM都有一个实例。

如果servlet没有实现
SingleThreadModel
,容器将使用相同的servlet实例。 否则,不能保证命中相同的
Servlet
对象。如果容器认为有必要,它可以自由创建更多的servlet实例。但是请求来自不同的线程,不一定是新创建的(正如Sanjay提到的)

来自Servlet 3.0规范:

对于不在分布式环境中托管的servlet(默认情况下),servlet 容器每个servlet声明只能使用一个实例。但是,对于servlet 通过实现SingleThreadModel接口,servlet容器可以 实例化多个实例以处理繁重的请求负载并序列化请求 适用于特定的实例

通常,Web容器通过以下方式处理对同一servlet的并发请求: 在不同线程上并发执行服务方法


我很确定它并不总是真的创建一个新的线程;更像是从现有线程池中提取一个空闲线程。@SanjayT.Sharma您是对的,通常是这样做的(出于性能原因),但这是应用程序服务器/servlet容器的实现细节,您的代码不应该依赖于此。为什么不根据请求实例化servlet?可能重复