Java Servlets threading model

2022-09-03 15:08:08

我想知道是否有人可以向我解释Java Servlets的线程模型?据我所知,servlet 容器中只能存在一个 servlet 实例,如果多个线程碰巧在等待该 servlet,则请求会以某种方式序列化。我不知道序列化过程是如何发生的...

任何人都可以解释它吗?


答案 1

如果请求由 servlet 串行处理,那么 Web 应用程序将非常慢。实际上,servlet 需要是线程安全的,因为 servlet 的单个实例可以负责同时处理多个请求。

通常,Web 应用程序容器将维护一个用于处理请求的线程池,传入的请求将按需分配给线程。


答案 2

从历史上看,你有两个模型,这取决于你的Servlet。如果 Servlet 实现了 SingleThreadModel,那么请求就在哪里排队。否则,这是现在唯一的模型,Servlet必须能够同时为多个请求提供服务。因此,该模型中没有排队,除非容器具有一些速率限制功能。