📅  最后修改于: 2023-12-03 15:01:32.650000             🧑  作者: Mango
Java Timer 是一个 Java 标准库中的类,可以用于在固定时间间隔内执行任务。它允许我们在指定时间后或者在固定周期内运行某些任务。
我们可以使用 java.util.Timer
类来创建一个 Timer 对象。可以通过 no-arg 构造函数或者带有 boolean 参数的构造函数来创建 Timer 对象。
import java.util.Timer;
public class MyProgram {
public static void main(String[] args) {
// 创建 Timer 对象
Timer timer = new Timer();
}
}
我们需要为 Timer 创建一个 TimerTask 对象,它将在定时器超时时运行。您可以通过扩展 java.util.TimerTask
类或创建匿名内部类来创建 TimerTask:
import java.util.Timer;
import java.util.TimerTask;
public class MyProgram {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Timer task is running.");
}
};
// 每 5 秒运行一次任务
timer.schedule(task, 0, 5000);
}
}
在上面的示例中,我们运行一个简单的任务,它将每 5 秒输出一条消息。
我们可以使用定时器以固定时间间隔运行任务。以下示例演示如何在指定时间运行任务:
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
public class MyProgram {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Timer task is running.");
}
};
// 在指定时间运行任务
Calendar date = Calendar.getInstance();
date.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
timer.schedule(task, date.getTime());
}
}
在上面的示例中,我们使用 java.util.Calendar
类指定从下周日早上 12:00 开始运行任务。
您可以使用 java.util.Timer
类的 cancel()
方法来取消定时器。以下示例演示如何在某个时间取消 Timer 对象:
import java.util.Timer;
import java.util.TimerTask;
public class MyProgram {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Timer task is running.");
}
};
// 启动定时器
timer.schedule(task, 0, 5000);
// 在 30 秒后取消定时器
try {
Thread.sleep(30000);
timer.cancel();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
在上面的示例中,我们在 30 秒后取消定时器。在实际应用中,您可以根据需要选择取消定时器的时间。
Java Timer 是一个强大和灵活的工具,可帮助您管理时间间隔。它易于使用,并且可以帮助您编写出更高效的代码。