如何在 Java 中调度任务,使其以固定的延迟重复执行,并在指定的延迟后开始
Timer 类中的一个方法是 void schedule(TimerTask task, long delay, long period) 方法。此方法安排任务以固定的延迟重复执行,从指定的延迟后开始。
在固定延迟执行中,每个执行都是相对于前一个执行的原始执行时间进行计划的。如果执行由于某种原因延迟(例如,垃圾回收),则后续执行也将延迟。
声明 − java.util.Timer.schedule(TimerTask task, long delay, long period) 的声明如下:
public void schedule(TimerTask task, long delay, long period)
这里,task 是要调度的任务,delay 是任务执行前的延迟时间(以毫秒为单位),period 是连续任务执行之间的时间间隔(以毫秒为单位)。
这里,task 是要调度的任务,firstTime 是任务首次执行的时间,period 是连续任务执行之间的时间间隔(以毫秒为单位)。
schedule(Timertask task, long delay, long period) 方法会抛出一些异常。它们如下:
| IllegalArgumentException | 如果 delay 为负数,或 delay + System.currentTimeMillis() 为负数,或 period <= 0,则抛出此异常。 |
| IllegalStateException | 如果任务之前已安排或取消,计时器已取消,或计时器线程已终止,则抛出此异常。 |
| NullPointerException | 如果 task 为空,则抛出此异常。 |
让我们看一个演示 void schedule(TimerTask task, long delay, long period) 方法用法的程序:
示例
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
// scheduling the task for repeated fixed-delay execution, beginning after the specified delay
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
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP