在特定时间缓存db表?

时间:2012-02-22 04:19:39

标签: java database caching

我必须在一段时间内缓存一些数据库记录。

例如我假设今天下午4点在我的网站上有大量流量。我会将登录表缓存在3.50左右。因为我知道用户此时会来。

我怎样才能在java中实现它?我想的是以特定的间隔运行一个线程然后 每隔1小时运行一次以检查我是否需要缓存某些内容

线程是否可以保证运行?

class Mthread extends Thread{

 run(){
  //update cache
 }
}

2 个答案:

答案 0 :(得分:0)

你可以看看java Cron。我想这应该可以解决你的问题。 http://www.sauronsoftware.it/projects/cron4j/

Cron作业用于在特定时间触发某些操作,并且具有高度可配置性,就像您可以将其配置为每天下午3:50一样。 希望它能解决你的问题

答案 1 :(得分:0)

您可以使用无限循环的while循环来实现run()方法。在循环的每次迭代结束时,计算线程休眠的毫秒数,直到下一个更新时间(如果您希望它定期唤醒,可能设置最大休眠时间)。保证线程在您需要时运行,前提是:

  1. 您确切地告诉它需要多长时间才能睡眠或等到下一次缓存更新时间。
  2. 您的主题在您想要之前不会被打断。
  3. 没有异常会导致您的线程的run()方法过早返回。
  4. 你的线程不会引起一些奇怪的错误,比如OutOfMemoryError。