Используйте Thread.sleep (), таймер или задание cron платформы для периодической операции в приложении Java EE - PullRequest
5 голосов
/ 17 декабря 2011

У меня есть приложение Java EE, которое загружает цены на акции из Интернета каждые пятнадцать минут. С точки зрения точности синхронизации, приложению лучше всего усвоить эту периодическую операцию, то есть использовать Thread.sleep() в сочетании со счетчиком или настроить таймер. Или лучше выставить задачу через URL-адрес и получить задание cron платформы Периодически URL (с необходимой частотой, конечно).

Каковы плюсы и минусы обоих подходов?

Я был напуган ошибкой таймера, которую я видел в отчете о реализации OpenJDK. В сообщении об ошибке указывалось, что изменения в системном времени влияют на работу связанных со временем операций и методов, таких как периодичность сна и периодичность таймера.

Ответы [ 3 ]

2 голосов
/ 17 декабря 2011

Timer не считается устаревшим, но теперь существует лучшая альтернатива: SheduledExecutorService. Одним из преимуществ этого является то, что для планирования используется относительное время, а не абсолютное время.

Использование внешнего скрипта cron или внутреннего таймера - это вопрос или предпочтение, ИМХО. Внутренний таймер проще в настройке, но если у вас уже есть другие кроны, вы можете использовать дополнительный и иметь эту ответственность в одном месте.

1 голос
/ 17 декабря 2011

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

  • Как и предполагалось, Quartz - хороший выбор.
  • Cron неплох, но потребуется больше настроек для интеграции с задача.
  • Если в Java EE вы можете использовать таймер EJB.
  • Вы можете свернуть свой собственный с ScheduledExecutorService (не рекомендуется)
1 голос
/ 17 декабря 2011

Thread.sleep не рекомендуется периодически выполнять код.Это неточно и обычно является признаком плохого дизайна.Я предлагаю вам использовать класс Timer , чтобы легко планировать выполнение кода периодически.

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