java.util.Timer

在应用开发中,经常需要一些周期性的操作,此时需要用到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,都只有一个后台的线程进行调度。 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值