2009-11-06 2 views
1

인사는 working.Say가 크론이 표현 0 0/2 * * *와 모든 2 분을 깨워 설정되어있을 때 내가 석영 실현 한 뭔가가있다? . 당신이 말하는 13시 10분 30초에서 프로젝트를 실행하면석영 작업 튜닝

는 첫 번째 작업은 13시 12분 0초 두 번째 13시 14분 0초 나머지마다 2 분 0초에서 발생합니다. 분명히 프로젝트의 시작과 행동의 첫 번째 발생 사이에는 1 백만 분의 일 : 30 초 밖에 없었습니다.

에 상관없이 프로젝트가 시작 초에 이는 2 분을 존중하지하는 첫 번째 항목에 대한 수있는 방법이 있습니까?

답변

3

크론 작업이 CronTrigger 클래스를 사용하여 석영으로 구성됩니다. 대안은 고정 지연 간격을 사용하여 구성 할 수있는 SimpleTrigger을 사용하는 것입니다. SimpleTrigger 등등 다양한 당신은 시작 시간을 지정할 수 생성자, 종료 시간, 반복 횟수, 반복 간격하고있다.

그런데 이런 종류의 스케줄링에는 Quartz를 사용하지 말고 java.util.concurrent.Executors.newScheduledThreadPool()을 사용하는 것이 좋습니다. 간단한 반복 작업의 경우 Quartz보다 훨씬 쉽습니다.

1

석영은 날짜와 시간이 아닌 시간을 기반으로 스케줄링을 위해 크론를 사용할 수 있습니다. 즉, 정의한 cron 표현식은 응용 프로그램이 시작된 시점이 아니라 시스템의 현재 시간과 직접 관련됩니다.

나는 당신이 당신의 문제를 해결하는 데 도움이됩니다 석영 구성을 인식하지입니다. 그러나, 솔루션은 응용 프로그램의 시작시에 시작 자신의 Thread을 만드는 것입니다 그리고 그것은 기본적으로 메서드를 호출하기 전에 2 분 대기 :

while (running) { 
    Thread.sleep(1000 * 120); 
    doStuff(); 
} 
+0

남자 당신은 방금 나에게 아이디어를 줬어! 고맙지 만 제대로 할 수있는 방법을 좀 더 파헤 치겠습니다. –

+0

석영은 cron을 기반으로하지 않습니다. 구문을 지원하지만 필요하지는 않습니다. 그 점을 반영하도록 – skaffman

+0

이 편집되었습니다. – romaintaz