Java 中Timer和TimerTask 定时器和定时任务使用的例子
Timer 和 TimerTask 是 Java 中两个重要的类,用于实现定时器和定时任务。 Timer 类是用来执行任务的类,它接受一个 TimerTask 做参数。 Timer 有两种执行任务的模式,一种是 schedule,另一种是 scheduleAtFixedRate。schedule 方法可以以两种方式执行任务,第一种方式是指定某个时间点执行任务,第二种方式是指定某个固定的时间之后执行任务。
TimerTask 是一个抽象类,继承自 java.lang.Runnable 接口,用于定义要执行的任务。 TimerTask 的 run() 方法将被 Timer 调用,以执行任务。
下面是使用 Timer 和 TimerTask 的一个简单示例:
```java
public class TimerTest {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000, 2000);
while (true) {
// ...
}
}
static class MyTask extends java.util.TimerTask {
public void run() {
System.out.println("________");
}
}
}
```
在上面的示例中,我们创建了一个 Timer 对象,并使用 schedule 方法 schedule 一个任务 MyTask,在 1 秒后执行一次,然后每隔 2 秒执行一次。MyTask 是一个继承自 TimerTask 的类,override 了 run() 方法,用于打印字符串“________”。
在 TimerTest2.java 中,我们使用了多个 TimerTask 对象,並使用 schedule 和 scheduleAtFixedRate 方法来执行任务。schedule 方法用于指定某个固定的时间点执行任务,而 scheduleAtFixedRate 方法用于指定某个固定的时间之后执行任务,并且可以指定执行的频率。
```java
public class TimerTest2 {
public static void main(String[] args) {
Timer timer = new Timer();
MyTask myTask1 = new MyTask();
MyTask myTask2 = new MyTask();
myTask2.setInfo("myTask-info-2");
timer.schedule(myTask1, 1000, 2000);
timer.scheduleAtFixedRate(myTask2, 2000, 3000);
while (true) {
// ...
}
}
}
```
在这个示例中,我们创建了两个 TimerTask 对象 myTask1 和 myTask2,并使用 schedule 和 scheduleAtFixedRate 方法来执行任务。myTask1 将在 1 秒后执行,每隔 2 秒执行一次,而 myTask2 将在 2 秒后开始执行,每隔 3 秒执行一次。
Timer 和 TimerTask 是 Java 中两个非常有用的类,用于实现定时器和定时任务。它们可以帮助我们实现各种复杂的定时任务,并且可以灵活地控制任务的执行频率和时间点。