java中timer 和timertask


通过Timer与TimerTask相结合实现的定时器功能。具体实现过程如下:

第一步,得到Timer的实例化对象

  Timer timer= new Timer() ;

第二步,实例化TimerTask对象

       TimerTask timerTask = new TimerTask(){

          publicvoid run(){

               //Doing something

           }

  }

  实例化TimerTask对象的时候,需要重写它的run()方法,然后在这个方法体内增加需要执行的具体操作。比如  输出一句话,发送一个消息之类的。

第三步,启动定时器

       Timer.schedule(TimerTask, delay, period) ;

       这样创建并启动一个定时器的工作就完成,但是在实际使用的过程中,可能会需要一些其他方面的操作手段。

       因为在项目程序运行过程中,某个时刻定时器的参数被修改,比如delay,period。为了及时的使用最新的正确的数据,就需要对已经存在的定时器进行关闭并且使用新的参数重新创建并启动。

       第一步,取消TimerTask,并在定时器Timer队列中将其删除。

       If(timerTask == null){

       timerTask .cancel() ;

      }

第二步,重新启动定时器

       If(timerTask!= null){

        timerTask = new TimerTask

     public void run(){

     //do something

   ) ;

      }

       timer.schedule(timeTask,delay,period) ;

       值得注意的地方是被执行了cancle()方法之后的TimerTask,在重新启动定时器的时候,必须重新实例化TimerTask才OK,不然会报“java.lang.IllegalStateException:TimerTask is scheduled already”的错误。每个定时器任务TimerTask只能被放置一次。


补充一点,timer 可以同时添加多个timertask。

cancel方法,timer和timertask都有。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值