如何在 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
广告