서블릿 요청은 기본적으로 다중 쓰레드임을 이해합니다. NetBeans를 사용하여 간단한 서블릿을 만들었고 Tomcat과 JBoss 모두에서 단일 스레드로 보입니다.서블릿 다중 쓰레드
은이 코드를 사용하여 테스트 :
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("access processRequest: " + this + " threadID: " + Thread.currentThread().getId());
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
Logger.getLogger(OctaveServlet.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("exit processRequest: " + this + " threadID: " + Thread.currentThread().getId());
}
(processRequest라는이의 doGet에서 호출)
나는 거의 같은 시간에 내 브라우저에서이 탭에서이 액세스 및 멀티 스레딩이 일을했을 경우
, 나는 그것을 "액세스"2 개의 서로 다른 스레드 ID를 누른 다음 두 스레드의 "출구"인쇄 기대합니다. OctaveServlet @ 31ccfe threadID : 34 14 : 53 : 46,840 INFO [-14 : 53 액세스 processRequest라는 41,839 INFO [표준 출력 (127.0.0.1-8080-1 HTTP) 대신,이 출력을 얻을 stdout] (http - 127.0.0.1-8080-1) exit processRequest : OctaveServlet @ 31ccfe threadID : 34 14 : 53 : 46,867 정보 [stdout] (http - 127.0.0.1-8080-1) access processRequest : OctaveServlet @ 31ccfe threadID : 34 14 : 53 : 51,867 INFO [stdout] (http - 127.0.0.1-8080-1) exit processRequest : OctaveServlet @ 31ccfe threadID : 34
위에서 알 수 있듯이 스레드는 하나뿐입니다. 말할 필요도없이, SingleThreadModel을 구현하지 않습니다.
어떤 도움많은 감사 ,
, 7 AS 보스, 우분투 11.04 썬 자바 1.6.0_26, 톰캣 7.0.14 : 넷빈즈 7.0.1, JVM :
여기 내 시스템의 세부 사항입니다 Oded.
감사합니다. 브라우저가 범인이라고 짐작하지 않았을 것입니다! – OdedS