servlet中的线程

unk*_*own 0 java multithreading servlets

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

对于ex我有2个servlet servlet 1和servlet 2都从相同的html表单获取rquest,一个通过锚标签,另一个通过表单

当链接被点击时,请求被发送到servlet,它再次向索引页面发送请求,并从那里提交表单,其中请求被发送到servlet 2

那么为servlet 1和servlet 2创建了两个线程,还是只创建了一个服务于两个servlet的线程?

Sot*_*lis 5

Servlet容器的一般模式是使用一个Thread来处理一个请求.

对于ex我有2个servlet servlet 1和servlet 2都从相同的html表单获取rquest,一个通过锚标签,另一个通过表单

提交时form,浏览器会发送HTTP请求.您的服务器调度a 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();
Run Code Online (Sandbox Code Playgroud)

同样,如果您按照锚链接,您的浏览器会发送一个新的HTTP请求,该请求将以相同的方式处理.

Servlet类实例线程之间共享.