如何在 Java 中调度任务以重复固定速率执行,从指定时间开始


Timer 类的一种方法是 void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)。此方法计划指定任务以重复固定速率执行,从指定时间开始。

在固定速率执行中,每个执行都相对于初始执行的计划运行时间进行计划。固定速率执行适用于响应绝对时间的重复活动。同样,固定速率执行适用于调度必须保持同步的多个重复计时器任务。

声明 − java.util.Time.scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 方法的声明如下:

public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

这里,task 是要调度的任务,firstTime 是执行任务的第一次时间,period 是连续任务执行之间以毫秒为单位的时间。

scheduleAtFixedRate(Timertask task, Date firstTime, long period) 方法抛出一些异常。它们如下所示:

IllegalArgumentException如果 firstTime.getTime 为负数或 period <= 0,则抛出此异常。
IllegalStateException如果任务事先已调度或取消,计时器已取消或计时器线程已终止,则抛出此异常。
NullPointerException如果任务为空,则抛出此异常。

让我们看一个示例,该示例演示如何在 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,new Date(),2000);
      // scheduling the task at the specified time at fixed-rate
   }
}

输出

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

更新于: 2020-06-25

2K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始
广告