关于定时器操作的逻辑问题

我写了一个定时器,定时启动,进入死循环。循环第一步是取当前时间和数据库中规定的扫描时间,需求是如果在扫描时间的上下五分钟都需要执行扫描操作。如果当前时间符合要求就进行扫描,不匹配就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;
    }