监控服务程序调度算法实现(三)

2014-11-24 09:10:14 · 作者: · 浏览: 3
d() {
List monitorService = dao.getService();
logger.info("加载记录:" + monitorService.size());


// 将被监控服务加入优先级队列里
for (int j = 0; j < monitorService.size(); j++) {
MonitorService service = monitorService.get(j);
// 初始化好时间
service.setCurrentTime(service.getIntervalTime() + intervalTime.get());
currentSet.add(service);
sleepQueue.add(service);
}


}


@Override
public void run() {
logger.info("读取新的service开启工作");
firstLoad();
try {
do {
logger.info("定时加载新的数据监听者休息{}ms", sleepTime);
Thread.sleep(sleepTime);
logger.info("##########开始执行更新数据############");
// 加载新的所有所数据 ,与当前的数据比较
List deleteList = dao.deleteService();
List addList = dao.incrementalService();
logger.info("删除旧的数据共:{}", deleteList.size());
currentSet.removeAll(deleteList);
logger.info("增加新的数据共:{}", addList.size());
currentSet.addAll(addList);
logger.info("更新后的currentSet size:{}", currentSet.size());


for (MonitorService service : addList) {
// 初始化绝对间隔时间
service.setCurrentTime(service.getIntervalTime() + intervalTime.get());
sleepQueue.add(service);
}
logger.info("########这一轮更新结束");
} while (!isClose.get());
} catch (Exception e) {
logger.error("", e);
}
}
}


/**
* 响应的封装类
*
* @author yzygenuine
*
*/
class Response {
public Map response;
public MonitorService service;
public boolean isNeedWarn;
public boolean isSucToNotify;


}


public void setDao(ServiceDao dao) {
this.dao = dao;
}


}