나는 1 초마다 작업을 반복하는 간단한 스케줄러가에 : 불행하게도 모든 패스를 늦게 그래서 결국 배우가 정확히 100 밀리 나중에 TickMsg를받는 ticker-duration
입니다Akka 스케줄러가() 말마다 반복
Cancellable task = Akka.system().scheduler().schedule(
Duration.create(0, TimeUnit.MILLISECONDS),
Duration.create(1, TimeUnit.SECONDS),
actor, new TickMsg("Tick", 0, 120)
);
을 - 좋아, 즉, 문서에 설명 된 것 그것은 나에게 분명하다 : 그것은 정확한 시간에 작업을 실행하지 않습니다
하지만, 모든 틱에, 그것은 기한이 지난 모든 것을 실행됩니다. 모든 패스마다 1000MS가 1100ms를 필요로 대신 전달할 것을 의미 사실상 어느 늦은 이유를 이해할 수없는 무엇
이다. 결과 10 회 통과 후 1 초 지연 후 6 초, 1 시간 후 6 분 등 ...
일부 솔루션은 반복주기를 약간 짧게 설정하므로 필요한 틱에서 늦지 않았습니다 작품, 그리고 스케줄러가 같은 작업을 반복 예에 필요한 :
Cancellable task = Akka.system().scheduler().schedule(
Duration.create(0, TimeUnit.MILLISECONDS),
Duration.create((1000 - tickerDuration/2), TimeUnit.MILLISECONDS),
actor, new TickMsg("Tick", 0, 120)
);
불행하게도이 방법이없이 작업 x 초마다 (또는 다른 TimeUnit
)를 반복 할 다른 방법이 조금 불편하고 쉽게 잊어가있다 그것을 밀리 초로 변환하고 단축?