Java 实现延迟执行程序

本文介绍了一种在Spring Boot中实现定时任务的方法,并通过定时调度结合延时机制确保特定条件下重复执行,直至满足终止条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

/**
   * 定时存入(每天凌晨二点 开始执行存入操作 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫长的~以后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值