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为负或期间<= 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,new Date(),2000); //在指定时间以固定速率安排任务 } }
输出结果
Task is running Task is running Task is running Task is running Task is running