scheduleAtFixedRate медленно / поздно - PullRequest
1 голос
/ 27 июля 2011

Я использую ScheduledExecutorService, чтобы каждый час обновлять базу данных методом scheduleAtFixedRate. Проблема в том, что это постепенно становится позже - в долгой службе я регистрирую это, и это около секунды в день.

Я провел небольшой урок только для того, чтобы изучить этот аспект - кажется, работает нормально, когда на ПК ничего не происходит (работает WinXP), но если что-то происходит, это быстро становится позже. 18:00:00.5 прошлой ночью был первый журнал, а этим утром было 09:00:00.5, затем 10:00:05.9, 11:00:26.8, 12:00:45.3, 13:01:07.8 ...

Я могу прикрепить код, хотя мой пример не самый маленький.

Кто-нибудь еще испытал это? Есть идеи, почему это не работает должным образом?

Я могу придумать множество способов обойти это, но мне бы очень хотелось узнать, почему это не работает так, как рекламируется!

Спасибо, Майк

1 Ответ

2 голосов
/ 27 июля 2011

Это нормальный AFAIK.С scheduleAtFixedRate, если какое-либо выполнение этой задачи занимает больше времени, чем ее период, последующие выполнения могут начаться с опозданием.При этом я бы порекомендовал scheduleWithFixedDelay.Это обеспечит выполнение задач с указанным интервалом задержки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...