gpt4 book ai didi

java - Servlet 中的线程

转载 作者:行者123 更新时间:2023-12-01 06:53:30 27 4
gpt4 key购买 nike

在应用程序中,如果涉及多个 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com