我写了一个定时器,定时启动,进入死循环。循环第一步是取当前时间和数据库中规定的扫描时间,需求是如果在扫描时间的上下五分钟都需要执行扫描操作。如果当前时间符合要求就进行扫描,不匹配就sleep10秒钟。现在问题是假如符合条件了扫描一次,我怎样让扫描器在这个扫描时间段内不再重复扫描?
public void run(){
while(true){
try {
boolean flag;
flag=new MyTimerTask().getTime();
if(true==flag){
new Thread(new dataCollection()).start();
}
Thread.sleep(10*1000);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
/***
* 匹配当前时间和数据库设定的扫描点,上下五分钟之内执行扫描
* @return flag
*/
public boolean getTime(){
boolean flag=false;
try {
//从数据库获取时间,获取当前时间,算出两者差值 前面的时间减去后面的时间
JDBCUtil util=new JDBCUtil();
String sql = "select scantime from tbl_code_scantime";
List<Date> dateList;
Map<String,Long> map=new HashedMap();
dateList=util.executeQueryForList(sql);
for (int i=0;i<dateList.size();i++) {
map=DateUtil.getDiff(new Date(), dateList.get(i));
//如果取得的时间在扫描点的上下五分钟之内,则启动扫描
if(map.get("countMinute")<5||map.get("countMinute")>-5){
System.out.println("启动扫描器");
flag=true;
}
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return flag;
}