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

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

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


回答:

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

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


回答:

定时任务就可以了


回答:

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


回答:

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


回答:

定时器的框架实现很多,我一般用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());

}

}


回答:

平日里面用惯了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();

}

});

`

以上是 如何每隔5秒/30秒/1分钟/3分钟/5分钟/10分钟/30分钟执行一段代码 的全部内容, 来源链接: utcz.com/p/937818.html

回到顶部