1. 创建 TimerTask 类
import java.util.TimerTask;
public class MyTimerTask extends TimerTask {
@Override
public void run() {
// 定时执行的任务逻辑
System.out.println("定时任务执行:" + System.currentTimeMillis());
}
}
2. 创建 Timer 对象并设置定时任务
import java.util.Timer;
public class TimerExample {
public static void main(String[] args) {
// 创建 Timer 对象
Timer timer = new Timer();
// 创建 TimerTask 对象
MyTimerTask myTimerTask = new MyTimerTask();
// 设置定时任务,延迟 0 毫秒,每隔 1000 毫秒执行一次
timer.schedule(myTimerTask, 0, 1000);
// 等待一段时间后停止定时器
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 停止定时器
timer.cancel();
System.out.println("定时器已停止");
}
}
在上面的例子中,MyTimerTask 类继承了 TimerTask,并实现了 run 方法,该方法中包含了定时执行的任务逻辑。在 TimerExample 类中,创建了一个 Timer 对象和一个 MyTimerTask 对象,并使用 schedule 方法设置定时任务的执行时间和间隔。随后,通过 Thread.sleep 方法等待一段时间,然后调用 timer.cancel() 停止定时器。
请注意,在实际应用中,Timer 类的使用已经不够灵活,更推荐使用 ScheduledExecutorService 接口的实现类 ScheduledThreadPoolExecutor,它提供了更强大和灵活的定时任务调度功能。
下面是一个使用 ScheduledExecutorService 的简单示例:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorExample {
public static void main(String[] args) {
// 创建 ScheduledExecutorService 对象
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
// 创建定时任务,延迟 0 秒,每隔 1 秒执行一次
executor.scheduleAtFixedRate(() -> {
// 定时执行的任务逻辑
System.out.println("定时任务执行:" + System.currentTimeMillis());
}, 0, 1, TimeUnit.SECONDS);
// 等待一段时间后关闭定时任务
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 关闭定时任务
executor.shutdown();
System.out.println("定时任务已关闭");
}
}
在这个例子中,使用 ScheduledExecutorService 来代替 Timer,并使用 scheduleAtFixedRate 方法设置定时任务的执行时间和间隔。同样,通过 Thread.sleep 方法等待一段时间后,调用 executor.shutdown() 来关闭定时任务。
转载请注明出处:http://www.zyzy.cn/article/detail/472/Java