如何在Java中计划任务以指定的延迟后开始执行以重复执行固定延迟

Timer类中的一种方法是void schedule(TimerTask task,long delay,long period)方法。此方法计划在指定的延迟之后开始重复执行固定延迟的任务。

在固定延迟执行中,相对于先前执行的原始执行时间安排每次执行。如果执行由于特定原因而延迟(例如,垃圾回收),则后续执行也将延迟。

声明-java.util.Timer.schedule(TimerTask任务,长时间延迟,长时间)声明如下-

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

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

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

schedule(Timertask任务,长延迟,长周期)方法引发的异常很少。它们如下-

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

让我们看一下一个程序,该程序说明了void Schedule(TimerTask任务,长延迟,长周期)方法的使用-

示例

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.schedule(task, 800, 1000);
   }
}

输出结果

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