如何每隔5秒/30秒/1分钟/3分钟/5分钟/10分钟/30分钟执行一段代码
怎么来控制频率?
定时器的框架实现很多,我一般用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();
}
});
`
15 回答8.4k 阅读
8 回答6.2k 阅读
4 回答4.4k 阅读✓ 已解决
4 回答4k 阅读
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
这种称之为定时器,基本上成熟的编程语言都有现成的框架可以使用。
比如java的Timer、quartz、Spring Schedule等。