一文带你搞懂Java定时器Timer的使用
概述
Java定时器(Timer)是一个工具,用来在指定的时间间隔内执行任务。通常用于定期执行一些操作,比如定时刷新数据、定时备份、定时发送邮件等。
Java定时器有两种实现方式:Timer
和 ScheduledThreadPoolExecutor
。Timer
是 JDK 原生提供的实现方式,而 ScheduledThreadPoolExecutor
是使用线程池实现的,后者更加灵活,但也需要多些代码逻辑实现。
使用方式
1. Timer
Timer
的使用非常简单,只需要实例化一个 Timer
对象,然后调用其 schedule()
方法就可以了。如下示例演示了如何使用 Timer
定时输出当前时间:
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
public static void main(String[] args) {
Timer timer = new Timer();
// 创建 TimerTask 对象
MyTimerTask myTimerTask = new MyTimerTask();
// 定时执行
timer.schedule(myTimerTask, 0, 1000); // 0 表示立刻执行,1000 表示每隔1秒执行一次
}
private static class MyTimerTask extends TimerTask {
@Override
public void run() {
System.out.println("当前时间为:" + System.currentTimeMillis());
}
}
}
上述代码中创建了一个 Timer
对象,并且创建了一个 MyTimerTask
对象,用来封装要执行的任务。接着调用 timer.schedule()
方法,执行任务。其中,第一个参数为要执行的 TimerTask
对象,第二个参数为定时器的首次执行时间,第三个参数为执行周期。如果需要只执行一次定时任务,则可以不传入第三个参数。
2. ScheduledThreadPoolExecutor
关于 ScheduledThreadPoolExecutor
的使用,需要借助 ExecutorService
来管理线程池,代码稍微有些复杂。如下示例演示了如何使用 ScheduledThreadPoolExecutor
定时输出当前时间:
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledThreadPoolExecutorTest {
public static void main(String[] args) {
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
// 创建 Runnable 对象
MyRunnable myRunnable = new MyRunnable();
// 定时执行
executorService.scheduleAtFixedRate(myRunnable, 0, 1, TimeUnit.SECONDS); // 0 表示立刻执行,1 表示每隔1秒执行一次
}
private static class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("当前时间为:" + System.currentTimeMillis());
}
}
}
上述代码中创建了一个 ScheduledExecutorService
对象,并设置线程池大小为1。接着创建了一个 MyRunnable
对象,用来封装要执行的任务。然后调用 executorService.scheduleAtFixedRate()
方法来定时执行任务。其中,第一个参数为要执行的 Runnable
对象,第二个参数为定时器的首次执行时间,第三个参数为执行周期,第四个参数为执行周期的时间单位。
总结
本文讲解了 Java 定时器的两种实现方式:Timer
和 ScheduledThreadPoolExecutor
,并且分别给出了使用示例。使用定时器可以方便地定期执行一些操作,值得开发者深入掌握。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文带你搞懂Java定时器Timer的使用 - Python技术站