YoshionTwo 2015-10-27 08:34 采纳率: 0%
浏览 584

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

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

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!