кеширование таблицы БД в определенное время? - PullRequest
1 голос
/ 22 февраля 2012

Я должен кэшировать некоторые записи БД в определенный период времени.

Например, я предполагаю огромный трафик на моем веб-сайте сегодня в 4 часа дня. Я кэширую таблицу входа в систему около 3.50. Потому что я знаю, что пользователи будут приходить в это время.

Как я могу сделать это в Java? Я думаю, что поток запускается через определенный интервал, а затем запускать его каждые 1 час, чтобы проверить, нужно ли мне что-то кэшировать

Поток гарантированно работает?

class Mthread extends Thread{

 run(){
  //update cache
 }
}

Ответы [ 2 ]

0 голосов
/ 22 февраля 2012

Вы можете реализовать свой метод run (), используя цикл while, который зацикливается бесконечно.В конце каждой итерации цикла вычислите количество миллисекунд, в течение которых ваш поток будет находиться в спящем режиме до следующего времени обновления (возможно, установите максимальное время ожидания, если вы хотите, чтобы он периодически просыпался).Поток гарантированно будет работать, когда вы этого захотите, при условии, что:

  1. Вы точно указываете, сколько времени ему нужно спать или ждать до следующего обновления кэша.
  2. Ваш поток не прерывается раньше, чем вы захотите.
  3. Нет исключений, вызывающих преждевременный возврат метода run () вашего потока.
  4. Ваш поток не вызывает странных ошибок, таких какOutOfMemoryError, произойдет.
0 голосов
/ 22 февраля 2012

вы можете взглянуть на Java Cron.Я думаю, это должно решить вашу проблему.http://www.sauronsoftware.it/projects/cron4j/

Задания Cron используются для запуска некоторых действий в определенное время, и их можно легко настраивать, например, вы можете настроить их на ежедневную работу в 15:50.Надеюсь, это решит вашу проблему

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