当数据量比较大时,map的效率会高于list;因此会选择使用map
1、新建一个定时器,设置定时刷新周期,
开启定时器之前先执行一次refreshCacheMap方法,把数据全量添加到内存map中
//当参数为true时,说明是daemon,当程序结束时,定时器随着关闭;当参数不为true的时候,需要调用cancel()方法才能关闭定时器
private Timer t = new Timer(true);
/**
* 开启定时刷新,每隔一段时间刷新一次,其中refreshCacheMap方法是定时刷新需要执行的方法。
* interval是定时刷新的间隔,单位是毫秒
*/
private void startRefresh(long interval) {
t.schedule(new TimerTask() {
@Override
public void run() {
refreshCacheMap();
}
}, 10000, interval);
}
2、根据上次刷新时间去数据库取数据(不分状态)。
当查出来状态为正常的数据,就把该数据添加到map中,否则,把该数据从map数据中清除。
此时map中的数据就会与数据库保持一致了。
3、关闭的时候,调用Timer的cancel()方法,关闭定时器;当定时器声明为true的时候,可以不调用cancel()方法。