java - Servlet 中的线程

标签 java multithreading servlets

在应用程序中,如果涉及多个 servlet,那么每次都会为不同的 servlet 创建一个新线程

例如,我有2个servlet,servlet 1和servlet 2都从同一个html表单获取请求,一个通过 anchor 标记获取,另一个通过表单获取请求

当点击链接时,请求被发送到 servlet 1,servlet 1 再次将请求分派(dispatch)到索引页面,并从那里提交表单,其中请求被发送到 servlet 2

是为 servlet 1 和 servlet 2 分别创建 2 个线程,还是只创建 1 个线程为两个 servlet 提供服务??

最佳答案

Servlet 容器的一般模式是使用一个线程 来处理一个请求。

for ex i have 2 servlets servlet 1 and servlet 2 both are getting rquest from the same html form one is getting through anchor tag and another through form

当您提交表单时,浏览器会发送一个 HTTP 请求。您的服务器会调度一个Thread来处理它。想象一下它做了这样的事情(实际上要复杂得多)

final Servlet servlet = ...// which servlet is url-mapped to the request
Runnable toRun = new Runnable(
    public void run() {
        servlet.service(request, response); // with exception handling of course
    }
);
Thread toDispatch = new Thread(toRun); // actually get it from pool, but for simplicity
toDispatch.start();

同样,如果您点击 anchor 链接,您的浏览器会发送一个新的 HTTP 请求,并以相同的方式进行处理。

Servlet 类实例在线程之间共享。

关于java - Servlet 中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18944850/

相关文章:

JavaFX如何将文本写入textArea中的新行?

multithreading - 什么是竞争条件?

servlets - CGI、WSGI、servlet 和类似概念有什么大不了的?

java - 发布自定义事件并在基于 Spring MVC 的 Rest 应用程序中异步处理它

Java Servlet 图像上传损坏(灰色底部)

java - Servlet Hello World 错误 - 根本原因 : java. lang.ClassNotFoundException:

java - 如何将一台计算机上的java应用程序连接到另一台计算机上的数据库

java - 方法内的方法

java - Spring - 在处理后修改每个请求的 header (在 postHandle 中)

multithreading - 创建新线程导致异常