如何每隔5秒/30秒/1分钟/3分钟/5分钟/10分钟/30分钟执行一段代码

发布于 2022-09-12 02:23:50 字数 57 浏览 19 评论 0

如何每隔5秒/30秒/1分钟/3分钟/5分钟/10分钟/30分钟执行一段代码
怎么来控制频率?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

空城旧梦 2022-09-19 02:23:50

这种称之为定时器,基本上成熟的编程语言都有现成的框架可以使用。

比如java的Timer、quartz、Spring Schedule等。

习ぎ惯性依靠 2022-09-19 02:23:50

定时任务就可以了

以往的大感动 2022-09-19 02:23:50

思路的话,参考linux的定时器

筱武穆 2022-09-19 02:23:50

一般的话是定时任务,或者可以用延时队列来做。延时队列算法可以用时间轮算法,或者直接用第三方的redis或者消息队列来实现延时队列

巾帼英雄 2022-09-19 02:23:50

定时器的框架实现很多,我一般用spring本身自带的Scheduled,看你的意思是想要一个具体的例子,给提供一个demo。下面demo演示了3种定时策略。

@Component
public class TestSchedule {

    @Scheduled(fixedDelay = 5000)  /** 上一个任务执行完成之后,间隔5秒执行下一个任务 */
//
//    @Scheduled(cron = "0/5 * * * * ? ") /** 单线程 没隔5秒检查一下是否有任务线程在执行,没有才调度下一个任务执行*/
//
//    @Scheduled(fixedRate = 5000) /** 很有原则,计划5秒一个任务,如果前面的任务超时了,那么下一个任务会在上一个任务结束前
//                                     立刻执行去追上计划的5秒周期,如果追不上,后续任务继续在上一个立刻完立刻执行去追上计划。
//                                     假如上一个任务5秒内提前完成任务,那么下一个任务会等待,直到5秒计划周期到了才执行*/
    public void printDate(){
        System.out.println("当前时间--"+ LocalDateTime.now());
    }
}
深居我梦 2022-09-19 02:23:50

平日里面用惯了quartz,不知道这个可以不,我用c#实现`
///时间的函数
public int a(int i)
{

return i == 1 ? 1000 : i == 2 ? 5000 : 60000;

}
Task task = Task.Run(() =>
{

int i = 0;
while (true)
{
    Thread.Sleep(a(i++));
    //dosomething();
}

});

`

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文