Java 实现延迟执行程序

我们在些项目的时候,有可能会遇到需要延迟执行的方法,或者代码块,这里我也碰到这个问题, 需要定时存入一些数据,而且还需要延时再次执行几次,直到某个条件不满足为止.

下面贴上的我的代码

/**
     * 定时存入(每天凌晨二点 开始执行存入操作 cron = ("0 0 2 * * ?")
     * @throws AppException
     */
    @Scheduled(cron = ("0 0 2 * * ?") )
    public void startSaveDetail() throws AppException{
        while(true){
            //获取当前时间
            Calendar time = Calendar.getInstance();
            //每天七点停止存入
            if(time.get(Calendar.HOUR_OF_DAY) <= ftpProperties.getStopSaveTime()){
                //上传数据
                int num = saveTokenDetail(ftpProperties.getSaveNumberOnce());

                if(num == 0 ){
                    Timer timer = new Timer();
                    //延迟一个小时后执行
                    TimerTask task = new TimerTask(){
                        @Override
                        public void run() {
                            System.out.println("一小时后再次执行:");
                            startSaveDetail();
                        }
                    };
                    timer.schedule(task,1000*60*60);
                    break;
                }
            }else{
                System.out.println("停止存入");
                break;
            }
        }

    }

 上面就是使用到了 定时调用 , 我上面整个方法是使用springboot自带的定时执行功能, 定时为每天凌晨2点开始执行,执行后,当条件暂时不满足时, 使用Timer  , 和 TimeTask 就把整个方法延迟一个小时后执行一次,最后当第一层条件不满足时,退出整个方法.

如需详细了解Timer类:

http://www.cnblogs.com/0201zcr/p/4703061.html

猜你喜欢

转载自blog.csdn.net/qq_38538004/article/details/81487550
今日推荐