如何在指定的延迟后开始安排Java中的任务以运行以重复固定速率执行

Timer类的方法之一是void scheduleAtFixedRate(TimerTask任务,延迟长,周期长)。此方法调度指定的任务,以在指定的延迟后开始重复执行固定速率的任务。

在固定速率执行中,相对于初始执行的计划运行时间来计划每个执行。固定利率执行很适合重复性活动,这些活动会响应绝对时间。同样,固定速率执行适用于计划必须保持同步的多个重复计时器任务。

声明-java.util.Time.scheduleAtFixedRate(TimerTask task,long delay,long period)方法声明如下-

public void scheduleAtFixedRate(TimerTask task, long delay, long period)

在这里,任务是要调度的任务,延迟是执行任务后的延迟(以毫秒为单位),周期是连续任务执行之间的时间(以毫秒为单位)。

scheduleAtFixedRate(Timertask task,long delay,long period)方法引发的异常很少。它们如下-

IllegalArgumentException如果delay为负,或者delay + System.currentTimeMillis()为负,或者period <= 0,则抛出此异常
IllegalStateException如果事先计划或取消了任务,取消了计时器或终止了计时器线程,则抛出此异常。
空指针异常如果任务为空,则抛出此异常。

让我们看一个示例,该示例显示如何调度Java中的任务以在指定的延迟之后开始以重复的固定速率执行运行-

示例

import java.util.*;
class MyTask extends TimerTask {
   public void run() {
      System.out.println("Task is running");
   }
}
public class Example {
   public static void main(String[] args) {
      Timer timer = new Timer(); // creating timer
      TimerTask task = new MyTask(); // creating timer task
      timer.scheduleAtFixedRate(task,300,2000);
      //在固定延迟后安排任务
   }
}

输出结果

Task is running
Task is running
Task is running
Task is running
Task is running