2010-08-24 3 views
6

내가 쿼츠와 시간 제한을 구현하는 가장 좋은 방법을 찾으려고하지만,이 프레임 워크가 이미 그것을 할 클래스 또는 인터페이스가 포함되어 있는지 알고 싶습니다. 작업을 얼마나 오래 수행했는지 알고 싶기 때문에 시간 제한을 구현해야합니다. 작업을 중단하라는 취지를 취하십시오.Quartz로 타임 아웃을 구현하는 방법은 무엇입니까?

+0

아직 endTime 매개 변수를 사용해 보지 않습니까? http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson05.html – Sean

+0

안녕하세요, 물어봐 줘서 고마워, 왜냐하면 그 매개 변수는 단지 일을 끝내기위한 특정 시간이기 때문에 나는 정말로 사용하지 않는다. 그리고 무한 루프를 피하기 위해 작업을 얼마나 오래 수행했는지 알고 싶습니다. – Jorge

+0

좋습니다. 그러면 스케줄러의 작동 시간을 추적하여 시간 초과를 추적 할 수있는 방법을 찾고 있습니다. 청취자 용 문서를 살펴보십시오. 필자는 이들을 사용하지 않았지만 애플리케이션 실행 상태/시간을 모니터하는 것은 논리적 인 선택처럼 보일 것입니다. – Sean

답변

8

자바 플랫폼은 스레드를 멈추게하는 어떤 방법도 제공하지 않기 때문에, Quartz는 스레드에서 실행중인 작업을 중단시킬 방법을 제공하지 않는다.

Quartz는 execute() 메소드에 어떤 코드가 있는지 알지 못하므로 잡을 스스로 처리해야한다.

작업의 시작 부분에 System.currentTimeMillis()를 사용하여 현재 시간을 기록한 다음 작업의 주 루프를 통해 다시 사용하여 현재 시간을 가져 오는 것이 좋습니다. 차이를보고 최대 시간이 지난지 확인하고, 그렇다면 기본 루프를 벗어나서 execute() 메소드를 종료하십시오.

+1

InterruptableJob 인터페이스도 참조하십시오. 그리고 JobListener 인터페이스는 사용자의 필요에 맞는 프레임 워크에 간단한 기능을 추가 할 수있는 도구를 제공합니다. – jhouse

관련 문제