2013-05-13 3 views
-3

서블릿에서 시작하는 스레드가 권장되지 않는다고 가정 할 때, 서블릿에서 생성 및 실행 된이 스레드가 예기치 않게 멈추는 원인을 알고 싶습니다.서블릿으로 작성된 스레드의 수명이 보장됩니까?

예를 들어, 서블릿 스레드를 다시 사용하면 하위 스레드가 손상 될 수 있습니다.

생성 된 서블릿의 스레드 수명이 끝까지 보장되지 않았거나 달리 지원할 이유가 있음을 나타내는 확실한 인수가 필요합니다.

나는 토론을 원치 않으며, 명확하고 명확한 예를 원한다. 서블릿에서 생성

+2

명확한 예제를 원한다면 스레드가 카운터 값을 인쇄하고 직접 서블릿을 재사용하도록하십시오. –

+0

"이제는 토론 할 곳이 없다"- 여기에서 채택 -> http://en.wikipedia.org/wiki/Boris_Gryzlov#cite_note-10 –

답변

4

스레드는 두 가지 이유로, (컨테이너가 실행되고있는만큼) 컨테이너에 의해 종료되지 않습니다

  • 이 컨테이너는 서블릿 내부에 생성 된 스레드에 대한 참조를 가지고 있지 않습니다 , 그러므로 그것은 호출 할 수 없다. Thread.stop() (예, 사용되지 않는 방법이며 스레드 종료의 좋은 방법이 아닙니다. more details).
  • 스레드 자체 만 잠겨있는 모니터의 잠금을 해제하는 방법을 알 수 있으므로 스레드 종료가 강제로 이루어져 모니터가 일관되지 않게됩니다.

참고 :이 웹 컨테이너에서 작동하는 방법 보장은 없습니다 그래서

  • 이 동작은 서블릿 사양이 적용되지 않습니다.
  • 웹 컨테이너에서 관리하는 리소스이기 때문에 서블릿은 스레드를 생성하지 않아야합니다.
+0

'Thread.stop()'은 더 이상 사용되지 않습니다. – Stephan

+0

예, 틀림없이 스레드를 중지하는 나쁜 방법입니다. 설명은 이유 2에 있습니다. –