怎样理解Servlet的单实例多线程

2024-11-02 18:04:54
推荐回答(1个)
回答(1):

ervlet容器默认是采用单实例多线程的方式处理多个请求的:

1. 当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例);

2. 容器初始化Servlet。主要就是读取配置文件(例如tomcat,可以通过servlet.xml的设置线程池中线程数目,初始化线程池;通过web.xml,初始化每个参数值等等);

3. 当请求到达时,Servlet容器通过调度线程(Dispatchaer Thread)调度它管理下的线程池中等待执行的线程(Worker Thread)给请求者;

4. 线程执行Servlet的service方法;

5. 请求结束,放回线程池,等到被调用;

由以上可得。。线程不是servlet本身。而是tomcat服务器从线程池中分配一个线程。。然后执行httpservlet的dopost方法。。本身是线程不安全的。