java用线程实现定时器

来源:互联网 发布:小区网络布线 编辑:程序博客网 时间:2024/06/04 10:45

现在的框架的功能很强大,封装好了各种功能,例如用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