如何在Java中调度任务,使其以固定的延迟重复执行,并从指定时间开始


Timer类中的一个方法是void schedule(TimerTask task, Date firstTime, long period)方法。此方法安排任务以固定的延迟重复执行,从指定时间开始。

在固定延迟执行中,每次执行都相对于前一次执行的原始执行时间进行调度。如果由于某种原因(例如垃圾回收)导致执行延迟,则后续执行也将延迟。

声明 − java.util.Timer.schedule(TimerTask task, Date firstTime, long period)声明如下:

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


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

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

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


让我们看一个示例,该示例演示如何在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-delay
   }
}

输出

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

更新于:2020年6月26日

514 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告