发布时间:2026-09-28 18:54:18 浏览次数:1
在Java中,Timer定时器也称为计时器,它是一种简单的定时任务调度,可以设定指定时间时刻后执行一段代码,这种方式常常用于需要定时执行某些任务的场景,如定时检查网络连接、定时备份数据等。本文将详细总结Java线程Timer定时器的用法。
1.1 创建Timer对象
在Java中,创建Timer对象需要调用java.util.Timer类的构造方法Timer(),如下所示:
Timer timer = new Timer();1.2 TimerTask类的定义
TimerTask是一个抽象类,用于定义Timer定时器需要执行的任务。需要继承该类并重写run()方法,具体需执行的操作写在重写的run()方法中。以下是一个简单的TimerTask示例:
class MyTask extends TimerTask { public void run() { System.out.println("Timer执行了一次任务。"); }}1.3 执行任务
使用Timer对象的schedule()方法将任务添加到计时器中并指定启动时间和执行周期,以下是示例代码:
Timer timer = new Timer();MyTask task = new MyTask();// 3秒后启动任务,之后每5秒执行一次timer.schedule(task, 3000, 5000);通过以上代码,可以使MyTask任务在3秒后首次启动,之后每5秒钟执行一次。需要注意的是,schedule()方法的第一个参数是TimerTask对象,第二个参数是延迟执行的毫秒数,第三个参数是任务执行的间隔毫秒数。如果只希望执行一次任务,可以使用schedule(TimerTask task, Date time)方法。
以下提供两个示例说明Timer定时器的用法。
3.1 示例1:使用Timer定时器打印当前时间
class PrintTimeTask extends TimerTask { public void run() { SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); Date date = new Date(System.currentTimeMillis()); System.out.println(formatter.format(date)); }}Timer timer = new Timer();PrintTimeTask task = new PrintTimeTask();// 1秒后启动任务,之后每2秒执行一次timer.schedule(task, 1000, 2000);3.2 示例2:使用Timer定时器定时备份数据
public class BackupData { private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public void backup() { Timer timer = new Timer(); BackupTask task = new BackupTask(); // 降低频率,每天凌晨3点备份一次 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 3); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); Date time = calendar.getTime(); if (time.before(new Date())) { time = this.addDay(time, 1); } timer.schedule(task, time, PERIOD_DAY); } public Date addDay(Date date, int num) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, num); return startDT.getTime(); } class BackupTask extends TimerTask { public void run() { System.out.println("备份数据任务执行了。"); // TODO:实际代码需实现数据备份操作 } }}