Java中的Timer类提供了schedule()方法,该方法可以在指定的延迟之后安排指定的任务执行。schedule()方法有多种参数组合,下面来详细讲解它的参数及其含义。
一、语法
public void schedule(TimerTask task, long delay, long period)
public void schedule(TimerTask task, Date time, long period)
public void schedule(TimerTask task, long delay)
public void schedule(TimerTask task, Date time)
public void scheduleAtFixedRate(TimerTask task, long delay, long period)
public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
二、参数
1.任务参数
一个实现了TimerTask接口的类,该类中实现run()方法。
2.执行时间参数
- delay: 表示任务运行前的延迟时间,单位是毫秒。
- time:表示任务需要执行的时间,格式为Date对象,若这个时间在现在时间之前,任务会立即执行。
3.间隔时间参数
- period: 表示任务执行的间隔时间,单位是毫秒。若period<=0,则表示仅执行一次。
- firstTime: 表示第一次执行任务的时间,格式为Date对象。若该时间在现在时间之前,则任务会立即执行。
三、示例
下面是两个示例,用于演示schedule()方法的不同参数组合的用法。
示例1
该示例演示了通过 schedule(TimerTask task, long delay) 方法安排任务执行,每隔1秒执行一次。
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;
public class ScheduleTaskTest {
public static void main(String[] args) {
TimerTask task = new MyTimerTask();
Timer timer = new Timer();
long delay = 1000L;
timer.schedule(task, delay);
}
static class MyTimerTask extends TimerTask {
public void run() {
System.out.println("任务执行了,时间为" + new Date());
}
}
}
输出结果:
任务执行了,时间为Fri Nov 29 17:04:57 CST 2019
任务执行了,时间为Fri Nov 29 17:04:58 CST 2019
任务执行了,时间为Fri Nov 29 17:04:59 CST 2019
...
该示例中,每隔1秒钟输出一条信息,因为 delay = 1000L。
示例2
该示例演示了通过 schedule(TimerTask task, Date time, long period) 方法安排任务执行,从指定的时间开始执行,每隔3秒执行一次。
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;
public class ScheduleTaskTest {
public static void main(String[] args) {
TimerTask task = new MyTimerTask();
Timer timer = new Timer();
Date time = new Date(System.currentTimeMillis() + 5000);
long period = 3000;
timer.schedule(task, time, period);
}
static class MyTimerTask extends TimerTask {
public void run() {
System.out.println("任务执行了,时间为" + new Date());
}
}
}
输出结果:
任务执行了,时间为Fri Nov 29 17:19:07 CST 2019
任务执行了,时间为Fri Nov 29 17:19:10 CST 2019
任务执行了,时间为Fri Nov 29 17:19:13 CST 2019
任务执行了,时间为Fri Nov 29 17:19:16 CST 2019
...
该示例中,从5秒钟之后开始每隔3秒输出一条信息,因为 time = new Date(System.currentTimeMillis() + 5000),也就是表示从当前时间之后5秒开始执行任务。period = 3000,表示每隔3秒输出一条信息。
四、总结
通过该文档,我们详细讲解了 Timer 类的 schedule() 方法,介绍了其各个参数及其含义,以及通过示例演示了不同参数组合的用法。如果读者想要深入了解 Timer,请看该文档的升级版“Java 中 Timer 的使用技巧”文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中Timer的schedule()方法参数详解 - Python技术站