现在的框架的功能很强大,封装好了各种功能,例如用spring框架实现定时功能只需在配置文件里配置即可,但是我们还是要学会如何用java代码实现定时器功能。
在java中有Timer和TimerTask这两个类,下面我们就利用这两个类来实现定时器,具体某些方法的用法可以参考API。
实现这样一个定时器的有如下步骤:首先定义一个用来实现你定时要做什么事情的类,这个类继承TimerTask类,然后重写这个类的run()方法,再定义一个Timer对象,用来设置什么时候执行需要执行任务。
下面是代码还有结果:
public class TimerTest {
//时间间隔,注意这里为了效果是每隔一分钟执行一次,正确的PERIOD_DAY是 24 * 60 * 60 * 1000
private static final long PERIOD_DAY = 60 * 1000;
private static class MyTimerTask extends TimerTask{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("时间:"+new Date().toString());
}
}
public static void main(String[] args)throws ParseException{
MyTimerTask myTimerTask=new MyTimerTask();
Calendar calendar = Calendar.getInstance();
//设置定时的时间
calendar.set(Calendar.HOUR_OF_DAY, 21);
calendar.set(Calendar.MINUTE, 32);
calendar.set(Calendar.SECOND, 0);
Date date=calendar.getTime(); //第一次执行定时任务的时间
//如果第一次执行定时任务的时间 小于 当前的时间
//此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
if (date.before(new Date())) {
Calendar startTime = Calendar.getInstance();
startTime.setTime(date);
startTime.add(Calendar.DAY_OF_MONTH, 1);
date = startTime.getTime();
}
Timer timer=new Timer();
//每隔PERIOD_DAY毫秒执行一次myTimerTask,第一次执行时间是date
timer.schedule(myTimerTask, date, PERIOD_DAY);
}
}
结果:
时间:Thu Oct 19 21:32:00 CST 2017
时间:Thu Oct 19 21:33:00 CST 2017
时间:Thu Oct 19 21:34:00 CST 2017