1. 程式人生 > >關於Servlet的併發響應

關於Servlet的併發響應

Servlet的生命週期是這個Servlet被訪問時構造,專案被Remove部署時才終止…

那麼我們現在再來看看,當多個使用者以doget/dopost方式同時訪問同一個Servlet時,那個響應情況是怎麼的呢??是一個一個來執行?還是多執行緒並行來執行呢??

1: 新建web Project

2:新建檔案: Servlet_MutiThreads.java

package myServlet;
import java.io.IOException;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
public class Servlet_MutiThreads extends HttpServlet {
 
    private static final long serialVersionUID = 1L;
 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
           throws ServletException, IOException {
      
       System.out.println(Thread.currentThread().getName() + " is running");
      
       try {
           Thread.sleep(10*1000);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }
      
       System.out.println(Thread.currentThread().getName() + " is ------------finished");
    }
 
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
           throws ServletException, IOException {
      
       doGet(req,resp);
    }
 
}

3.XML加入:

   <servlet>
    <servlet-name>Servlet_MutiThreads</servlet-name>
    <servlet-class>myServlet.Servlet_MutiThreads</servlet-class>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>Servlet_MutiThreads</servlet-name>
    <url-pattern>/myServlet/Servlet_MutiThreads</url-pattern>
  </servlet-mapping>

那麼這個servlet的訪問的url是: http://localhost:8080/Servlet_MutiThreads//myServlet/Servlet_MutiThreads

這個Servlet裡,每次訪問都sleep 10s,就是說每個訪問的持續時間為10s….(這裡為不什麼不用wait呢? 是因為sleep時,儘管執行緒休眠了,但還是不會釋放鎖的,而這正是我們想要的,而wait是會釋放的)

我們有在位址列裡多次訪問這個URL(連續按多次enter):


 

我們可以看到,這個訪問是併發的,並Servlet的響應也是併發的,檢視資料:

Servlet體系結構是建立在Java多執行緒機制之上的,它的生命週期是由Web容器負責的。

當客戶端第一次請求某個Servlet時,Servlet 容器將會根據web.xml配置檔案例項化這個Servlet類。當有新的客戶端請求該Servlet時,一般不會再例項化該Servlet類,也就是有多個執行緒在使用這個例項。

Servlet容器會自動使用執行緒池等技術來支援系統的執行

我們就驗證了Servlet能併發響應多個使用者的訪問

原文:https://blog.csdn.net/irelandken/article/details/6935659