2014-11-10 6 views
0

java를 사용하여 시간대 별 일정 작업 이벤트를 만들었습니다. 내 코드가 괴롭다.타이머를 사용하여 Java에서 일정 작업

Timer timer = new Timer(); 
Calendar date = Calendar.getInstance(TimeZone.getTimeZone("Asia/Colombo")); 
date.set(Calendar.HOUR_OF_DAY, 0); 
date.set(Calendar.MINUTE, 0); 
date.set(Calendar.SECOND, 0); 
timer.schedule(new TimerTask() { 
    public void run() { 
     System.out.println("Runs everday morning 12.00 AM"); 
    } 
}, date.getTime(), 1000 * 60 * 60 * 24); 

하지만이 메서드를 호출하면 곧이 작업이 실행됩니다. 매일 아시아/콜롬보 시간대에이 직업 12.00을 운영해야합니다. 그렇게하는 방법?

+0

서버에 설정된 시간대는 무엇이며 시간은 어떻게됩니까? –

+0

지금 로컬에서 실행 중입니다. 그래서 asia/colombo. 어떤 도움 ?? – manitaz

+0

언제 실제로 실행됩니까? –

답변

1

과거 (오늘 자정)에 첫 번째 실행을 예약 했으므로 작업이 즉시 실행됩니다. javadoc 따르면

:

[...] 예정된 제 시간이 과거의 경우는 즉시 실행 예정이다.

date.add(Calendar.DATE, 1); 

는 또한, 당신은 아마 고정 로이 작업의 실행을 예약하려면 :

이 문제를 해결하는 가장 쉬운 방법은, 예약 된 첫 번째 실행 시간에 일일를 추가하는 것입니다고정 지연 대신. 그렇게하지 않으면 작업을 완료하는 데 소요되는 실제 시간에 따라 매일 조금 늦게 실행됩니다. 자세한 내용은 javadoc을 다시 참조하십시오.

+0

그 다음날 그 시간에 실행되도록 설정하는 방법은 무엇입니까? – manitaz

+0

@manitaz 답변을 업데이트했습니다. –

+0

고맙습니다 ............. – manitaz

관련 문제