一、背景介绍
Java中提供了一个Timer类,是一种比较简单的定时器实现,比如我们可以基于这个类实现类似于 Linux 中 Cron 一样定时执行某些任务的功能。其中,定时调度函数 schedule 是 Timer 类最常用的方法之一,他用于安排指定的任务在指定的时间点或者经过指定的延迟后执行一次。这个函数有 4 种用法,下面将详细讲解。
二、使用方法
- schedule(TimerTask task,Date time)
这种用法表示在指定时间执行一次任务。其中,参数 task 表示要执行的任务,可以是 TimerTask 的子类;参数 time 表示任务执行的时间,是一个 Date 类型的对象。
import java.util.Timer;
import java.util.TimerTask;
public class ScheduleTaskDEMO01 {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Task executed at " + new Date());
}
},new Date( System.currentTimeMillis() + 5000));
}
}
以上代码实现了在系统当前时间5秒之后执行一次任务的功能。
- schedule(TimerTask task,long delay)
这种用法表示延迟指定时间后执行一次任务。其中,参数 task 表示要执行的任务,可以是 TimerTask 的子类;参数 delay 表示延迟执行任务的时间,是一个 long 类型的值,单位是毫秒。
import java.util.Timer;
import java.util.TimerTask;
public class ScheduleTaskDEMO02 {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask(){
@Override
public void run() {
System.out.println("Task executed after 2 seconds.");
}
}, 2000L);
}
}
以上代码实现了在执行任务前延迟 2 秒的功能。
- schedule(TimerTask task,Date firstTime,long period)
这种用法表示在指定时间开始,周期性地执行任务。其中,参数 task 表示要执行的任务,可以是 TimerTask 的子类;参数 firstTime 表示首次执行任务的时间,是一个 Date 类型的对象;参数 period 表示每个执行周期的间隔时间,是一个 long 类型的值,单位是毫秒。
import java.util.Timer;
import java.util.TimerTask;
public class ScheduleTaskDEMO03 {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask(){
int count = 0;
@Override
public void run() {
System.out.println("Task executed " + ++count + " times at " + new Date());
}
}, new Date(System.currentTimeMillis() + 3000L), 2000L);
}
}
以上代码实现了在指定时间(当前时间后 3 秒)开始,每隔 2 秒执行一次任务的功能。
- schedule(TimerTask task,long delay,long period)
这种用法表示延迟指定时间后开始周期性地执行任务。其中,参数 task 表示要执行的任务,可以是 TimerTask 的子类;参数 delay 表示延迟执行任务的时间,是一个 long 类型的值,单位是毫秒;参数 period 表示每个执行周期的间隔时间,是一个 long 类型的值,单位是毫秒。
import java.util.Timer;
import java.util.TimerTask;
public class ScheduleTaskDEMO04 {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
int count = 0;
@Override
public void run() {
System.out.println("Task executed " + ++count + " times after a delay of 1 second.");
if (count == 5) {
timer.cancel();
}
}
}, 1000L, 1000L);
}
}
以上代码实现了延迟 1 秒后每隔 1 秒周期性执行任务,执行 5 次后停止任务。
三、总结
本文具体介绍了 Timer 类的定时调度函数 schedule 常用的四种用法,并且给出了每种用法的代码示例。这些用法可以帮助我们实现一些常见的定时任务的功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java实现Timer的定时调度函数schedule的四种用法 - Python技术站