如何在Java中调度任务,使其以固定的重复速率执行,并在指定的延迟后开始
Timer类的方法之一是void scheduleAtFixedRate(TimerTask task, long delay, long period)。此方法调度指定的任务以固定的重复速率执行,从指定的延迟后开始。
在固定速率执行中,每个执行都是相对于初始执行的计划运行时间进行调度的。固定速率执行适用于响应绝对时间的重复性活动。同样,固定速率执行也适用于调度必须保持同步的多个重复计时器任务。
**声明** − java.util.Timer.scheduleAtFixedRate(TimerTask task, long delay, long period) 方法声明如下:
public void scheduleAtFixedRate(TimerTask task, long delay, long period)
这里,task是要调度的任务,delay是任务执行之前的延迟(毫秒),period是连续任务执行之间的时间间隔(毫秒)。
scheduleAtFixedRate(TimerTask task, long delay, long period) 方法会抛出一些异常。它们如下所示:
| IllegalArgumentException | 如果delay为负数,或者delay + System.currentTimeMillis()为负数,或者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,300,2000);
// scheduling the task after the delay at fixed-rate
}
}输出
Task is running Task is running Task is running Task is running Task is running
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP