Java 任务定时处理

本文最后更新于:2024年3月18日 凌晨

Java 任务定时处理

  • 实际应用中有时需要安排某个任务以一定周期间隔反复执行,为此JDK提供了java.util.Timer类,java.util.Timer也叫定时器,实际上是个线程,可定时调度执行TimerTask类型任务的对象,TimerTask是一个抽象类,实际任务对象是其子类对象,TimerTask的子类的run()方法用来安排任务的具体执行逻辑,任务每次被调度执行时将执行run()方法。
  • 通过Timer类的schedule()方法安排任务的执行时间,以下为schedule()方法的几种形态,其中,参数task代表任务对象,time代表启动时间,delay代表延时,period代表间隔时间。
    • schedule(TimerTask task, long delay):从现在起超过delay毫秒执行任务一次。
    • schedule(TimerTask task, Date time):在指定时间执行任务一次。
    • scheduleAtFixedRate(TimerTask task, long delay, long period):从现在起超过delay毫秒以后,每隔period毫秒执行任务一次。
    • schedule(TimerTask task, Date time, long period):从time时刻开始,每隔period毫秒执行任务一次。

[例12-4]:统计输出任务调度执行次数,每次执行发出提示音。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class MyTimerTask extends java.util.TimerTask {
int k = 0;

public void run() {
System.out.println(k++ + " times"); // 输出执行次数。
Toolkit toolkit = Toolkit.getDefaultToolkit();
toolkit.beep(); // 发出一声"咚”
}
}

public class 统计调度次数 {

public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new MyTimerTask(), 1000, 2000);
}
}
  • 运行程序不难发现,执行次数的统计输出结果每间隔2秒累增一次,也就是每次调度执行的是同一个任务对象的run()方法。

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!