@Controller
public class LoadRoadInfoListener {
private static Logger logger = Logger.getLogger(LoadRoadInfoListener.class);
private List<RoadInfo> roadInfoList = new ArrayList<RoadInfo>();
@Autowired
private RoadInfoMapper dao;
@Bean(name="roadInfoCacheThread")
public String service() {
new Thread(()-> {
while(true) {
try {
logger.info("缓存路段信息线程启动!!!");
roadInfoList.clear();
roadInfoList = dao.selectRoadInfos(null);
//刷新时首先清除缓存
RoadInfoCache.INSTANCE.clearCache();
//刷新缓存
for (RoadInfo roadInfo : roadInfoList) {
RoadInfoCache.INSTANCE.addRoadInfo(roadInfo);
}
System.out.println(RoadInfoCache.INSTANCE.getSize());
}catch (Exception e) {
logger.error("刷新路段信息缓存失败..."+e.getMessage());
e.printStackTrace();
}finally {
try {
Thread.sleep(300000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
return null;
}
}