Servlet是單實例多線程的,所以我就做了一個小的測試驗證這種模式,很簡單,
class DemoServlet extends HttpServlet {
public void doGet(......) {
System.out.println("come in.");
Thread.sleep(10 * 1000);
}
}
然後在浏覽器多個地址欄同時請求這個servlet,發現必須第前面的請求結束,後面的請求才可以進入doGet方法,實在搞不懂為什麼,求大神幫解答下!!
另外,關於異步Servlet的也是如此,必須等前面請求的AsyncContext.complete()之後,後面的請求才能進doGet方法,這還算多線程嗎?
認為這跟servlet無關,下面的應該是可能的情況
1. 服務器的請求允許數已被設置為1(如果你沒動過,那麼不會是1)。
2. 使用多個浏覽器同時請求嘗試(懷疑同一session Id被和諧,嗯,有可能是服務器優化的一種表現,不是很好嗎)。
3. 使用多個終端同時請求嘗試(懷疑同一session Id被和諧)。
4. 你看錯了。