2010-11-22 2 views
1

추상 질문서블릿 호출 이외의 Java 애플리케이션 서버에서 스레드를 시작하거나 공유 리소스를로드하는 가장 좋은 방법은 무엇입니까?

Java 응용 프로그램 서버에서 서블릿을 통해 공유됩니다 메모리에 자원을로드하는 가장 좋은 방법은 무엇입니까?

나는 큐를 모니터링하는 데몬 스레드를 만들려면 내가 실제로

을하고있는 중이 야. 이 대기열은 서블릿 스레드에서 객체를 추가 할 수 있습니다. 스레드는 설정된 시간까지 대기하고 항목이 있는지 확인하기 위해 대기열을 확인합니다. 그렇다면 항목을 처리하고 제거합니다. 이 스레드는 언젠가 어딘가에서 시작해야합니다. init 메소드 만 구현 된 서블릿이이 작업을 위해 작동 할 것이라고 생각했거나 애플리케이션 서버에 이와 같은 시작 코드를 넣을 수있는 좋은 곳이 있습니까? 모든 문제에 접근하고 있습니까?

업데이트

나는 this question 발견 허용 대답은 LifeCycle의 리스너를 사용하는 것이 었습니다. 이것은 일을 수행하는 이식성있는 방법인가요, 아니면 하나의 응용 프로그램 서버에 묶이는 코드입니까? 좀 더 조사를 통해 메시지 보드에서 몇 가지 게시물을 찾아서 ServletContextListener 구현에서이 작업을 수행 할 수 있음을 알게되었습니다.

답변

2

대개 내가 설명하는 방법을 사용하여 서블릿에서 이러한 종류의 작업자 스레드를 간접적으로 시작합니다 (일반적으로 큐 추출을 수행하고 처리를 제어하는 ​​다른 객체 내부에 존재합니다).

스레드에서 오브젝트를 당기기 위해 시간을 기준으로하지 않아도되고, 대기열 객체에서 스레드 대기()를 할 수 있으며 다른 스레드에 의해 객체가 대기열에 놓이면 스레드는 대기열에서 notify()를 호출하여보고있는 '작업자'스레드를 해제합니다.

Google의 'java worker thread wait notify'에는 여러 가지 예가 나와 있습니다.

+0

팁을 기다려 주셔서 감사합니다/알리십시오. – Elijah

관련 문제