现在的位置: 首页 > 综合 > 正文

java.util.Timer

2014年10月30日 ⁄ 综合 ⁄ 共 896字 ⁄ 字号 评论关闭

在应用开发中,经常需要一些周期性的操作,此时需要用到java.util.Timer。

Timer是JDK中的定时调度类,主要用来定时触发任务:

Timer是调度控制器,TimerTask是可调度的任务:

public static void main(String[] args)
    {
        Timer timer = new Timer();
        //timer.scheduleAtFixedRate(new PlainTimerTask(), new Date(), 3000);
        timer.scheduleAtFixedRate(new PlainTimerTask(), 2000, 5000);
    }

    private static class PlainTimerTask extends TimerTask
    {
        @Override
        public void run()
        {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(format.format(Calendar.getInstance().getTime()));
        }
    }

任务类需要继承 TimerTask类。

timer.schedule(task,date,second) date表示什么时候执行,second表示每隔多少秒再执行。有4个重载方法。

 其基本处理模型是单线程调度的任务队列模型,Timer不停地接受调度任务,所有任务接受Timer调度后加入TaskQueue,TimerThread不停地去TaskQueue中取任务来执行.

 

Timer

 

     从图上不难看出,这就是生产者--消费者模型的一种特例:多生产者,单消费者模型。

     此种消息队列实现方式在浏览器中的编程模型中也有类似的实现,javascript中的定时执行函数setTimeout(expression,milliseconds)也是基于此种原理实现的。

Timer中仅有一个存储Task的Queue和一个调度所有Task的线程。不管你schedule几次,在Timer上加了几个Task,都只有一个后台的线程进行调度。 


抱歉!评论已关闭.