scheduleAtFixedRate
메서드를 사용하여 매시간 데이터베이스에 대한 업데이트를 제공하기 위해 ScheduledExecutorService
을 사용하고 있습니다. 문제는 점차적으로 나중에 도착한다는 것입니다. 장기간 서비스를하면서 로깅을하고 있으며 하루에 두 번째입니다.scheduleAtFixedRate slow/late
저는이 측면을 검사하기 위해 작은 클래스를 만들었습니다. WinXP를 실행하는 PC에서는 아무 일도 일어나지 않지만 상황이 빠르게 진행되면 제대로 작동하는 것처럼 보입니다. 18:00:00.5
지난 밤 첫 로그이었고, 오늘 아침에 내 예는 작은 아니지만 내가 코드를 첨부 할 수 있습니다
09:00:00.5
다음 10:00:05.9
, 11:00:26.8
, 12:00:45.3
, 13:01:07.8
...이었다.
누구든지이 경험이 있으십니까? 이 아이디어가 제대로 작동하지 않는 이유는 무엇입니까?
나는 그 주위에 여러 가지 방법을 생각할 수 있지만 광고 된대로 작동하지 않는 이유를 알고 싶습니다.
감사합니다, 마이크
아니요, JavaDoc에 따르면 각 실행 기간은 중요하지 않습니다. '장기적으로 실행 빈도는 지정된 기간의 역수가됩니다 (시스템 클럭이 Object.wait (long) 정확합니다. " – Thomas
@ 토마스, 당신은 링크를 제공 할 수 있습니까? – Moonbeam
@ 몽구스 방금 수업을 잘못 들었습니다.'ScheduledExecutorService' 대신에'Timer'입니다. 그러나 당신이 링크 한 JavaDoc은 답을 다른 말로 표현한다 :'scheduleAtFixedRate'는 정확히'initial_delay + n * rate'에서 시작해야한다. 반면에'scheduleWithFixedDelay'는 태스크의 지속 시간을 고려할 것이다 :'... 주어진 지연 한 실행 종료와 다음 시작 (scheduleWithFixedDelay) 사이 – Thomas