java.util.Timer.scheduleAtFixedRate()를 사용하여 일정 간격으로 일정한 시간에 TimerTask를 실행하도록 예약했습니다. TimerTask에는 6 시간의 지속 시간 동안 실행을 제어하는 논리가 있습니다. 타이머는 다음 날 동일한 시간에이 작업을 시작한다고 가정합니다. 그러나 가끔씩 작업은 해당 작업이 끝난 직후에 다시 시작됩니다. 나는이 사건의 어떤 패턴도 보지 못했다. 단지 무작위로 일어난다. 이 응용 프로그램을 여러 번 실행하여 테스트했지만 특정 패턴을 식별하지 못했습니다.이상하게 행동하는 java.util.Timer
이와 비슷한 내용입니다.
class App{
public static void main(final String[] args) {
Timer timer = new Timer();
ProcessManagerTask processManager = new ProcessManagerTask()
timer.scheduleAtFixedRate(processManager, today @ 01 AM, 1440 minutes))
//some logic to keep this running forever
}
}
public class ProcessManagerTask extends TimerTask {
public ProcessManagerTask(){
//end time = today @ 7 AM
}
public void run() {
while(end time is not expired){
//do some stuff
}
}
(작업이 끝난 경우) ProcessManagerTask 언젠가 7 즉시 다시 시작합니다.
EDIT : Timer에 문제가 나타나는 이유를 아는 사용자가 있습니다. 나는 아직도 알아낼 수 없다.
EDIT [2011 년 4 월 8 일] : 타이머 문제는 여전히 해결되지 않습니다. 어떤 사람이 도울 수 있으면 감사 할 것입니다.
[ScheduledExecutorService] (http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html)를 사용하는 것이 좋습니다. – mre
프로그램을 다시 시작하는 데 문제가있을 수 있습니까? 이게 어디에서 뛰고 있습니까? – jzd
귀하의 질문을 명확하게 이해하지 못합니다. 운영 체제가 Windows에서 실행되는 것을 의미하는 경우. 이 응용 프로그램은 Windows 서비스로 실행되지만 명령 프롬프트를 실행해도이 문제가 발생합니다. – Amit