Как запланировать действие в Java? - PullRequest
1 голос
/ 31 января 2010

Я разрабатываю приложение, которое требует, чтобы содержимое базы данных записывалось в файл ms-excel в конце каждого дня. Я написал код для копирования содержимого в файл ms-excel, но как теперь действовать дальше? Должны ли потоки использоваться для проверки завершения 24 часов или есть какой-то другой механизм? Пожалуйста, дайте мне руководство.

Ответы [ 3 ]

5 голосов
/ 31 января 2010

Если вам нужен механизм для запуска вещей в установленное время в течение дня, вам следует рассмотреть Quartz Scheduler . Это может быть излишним, но очень способным.

Например, вы можете использовать его CronTrigger для настройки задания на выполнение по расписанию, определенному выражением cron, например, 0 23 55 * * ? (или что-то в этом роде) будет выполнять вашу работу с 5 до полуночи каждую ночь (см. примеры ).

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

3 голосов
/ 01 февраля 2010

Я согласен с другими, что было бы лучше использовать что-то вроде crontab. Однако, если вы не можете этого сделать, я бы использовал пакет java.util.concurrent, добавленный в Java 1.5. Вам понадобится класс ScheduledThreadPoolExecutor . В частности, метод scheduleAtFixedRate ().

1 голос
/ 01 февраля 2010

Я думаю, что с точки зрения дизайна лучше использовать crontab на платформе Linux или планировщик задач на платформе Windows. Это сделает вашу Java-программу маленькой и простой. Хотя решение с ожиданием потока в течение определенного времени кажется простым, оно добавит одну серьезную проблему - вам придется следить за его состоянием. Кроме того - я бы посоветовал тщательно планировать журналы, которые ваша работа записывает при каждом запуске. Важно иметь журналы как для успешных, так и для неудачных запусков. Имеет смысл сделать отдельный файл для таких логов. Следует рассмотреть еще один случай - что делать, если база данных не была доступна точно в то время, когда выполнялось задание? Можно ли ждать еще 24 часа?

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