`
robinjie
  • 浏览: 135635 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Timer与TimerTask入门

阅读更多

Java2的开发包中提供了一种很使用的线程功能:提前安排将来某段时间执行某任务Timer ,TimerTask。
  你可以使用这些类创建后台进程,让其在等待一段规定的时间后执行,或者让其没隔一段时间执行。
  你也可以用Thread来完成,但利用Timer与TimerTask显然省事不少。
  TimerTask实现了Runnable接口,待执行的任务置于run()中。
  Timer是一个安排TimerTask的类此此两者一般一起工作。所应用时首先硬创建一个TimerTask的对象,
  然后用一个Timer的类对象安排执行它
  Timer类包含的方法有:
  1.Timer()
  以常规方式运行task
  2.Timer(boolean)
  true时使用后台进程线程。只要剩下的程序记叙运行,后台进程线程就会执行。
  3.public void cancel()
  终止Timer的功能执行,但不会对正在执行的任务有影响。当执行cancel方法后将不能再用其分配任务。
  4.public void schedule(TimerTask task,Date time)
  task被安排在time指定的时间执行,如果时间为过去时则任务立刻执行。
  5.public void schedule(TimerTask task, Date firstTime, long period)
  task被安排在time指定的时间执行,执行后将每隔period(毫秒)反复执行。由于规定的时间间隔并不能保证与时钟精准的同不步,所以该方
  法最适合从短期看保持频率准确是更重要的的地方
  6.public void schedule(TimerTask task, long delay)
  task被安排在delay(毫秒)指定的时间后执行。
  7.public void schedule(TimerTask task,long delay, long period)
  task被安排在delay(毫秒)指定的时间后执行。执行后将每隔period(毫秒)反复执行。
  8.public void scheduleAtFixedRate(TimerTask task,Date firstTime, long period)
  task被安排在firstTime指定的时间执行。执行后将每隔period(毫秒)反复执行。每一次重复的时间时盒第一次执行而不是和前一次执行有关

。因此执行的总速度是固定的。
  9.public void scheduleAtFixedRate(TimerTask task,long delay,long period)
  task被安排在delay(毫秒)指定的时间后执行。执行后将每隔period(毫秒)反复执行。每一次重复的时间时盒第一次执行而不是和前一次执

行有关。因此执行的总速度是固定的。
  TimerTask的主要方法:
  1.public boolean cancel()
  终止任务的执行运行。如果Timer时要求循环执行的,则如果正在执行,则执行完了就再步会循环。如果还未执行或处于停歇期,则不会执行


  2.public abstract void run()
  3.public long scheduledExecutionTime()
  返回被安排最后执行任务的时间。一般确定任务的当今的实行是否足够及时 ,证明进行被计划的活动为正当:
  public void run() {
       if (System.currentTimeMillis() - scheduledExecutionTime() >=
           MAX_TARDINESS)
               return;  // Too late; skip this execution.
       // Perform the task
   }

  4.protected TimerTask()
例:

java 代码
  1. package com.robin.demo.timertask;   
  2.   
  3. import java.util.Timer;   
  4. import java.util.TimerTask;   
  5.   
  6. public class TimerTaskDemo extends TimerTask {   
  7.        
  8.     String index;   
  9.   
  10.     Timer myTimer = new Timer();   
  11.   
  12.     public TimerTaskDemo(String index) {   
  13.         this.index = index;   
  14.     }   
  15.   
  16.     public void run() {   
  17.         System.out.println(index);   
  18.     }   
  19.   
  20.     /**  
  21.      * @param args  
  22.      */  
  23.     public static void main(String[] args) {   
  24.         TimerTaskDemo myTask1 = new TimerTaskDemo("First task");   
  25.         myTask1.start(0,3);   
  26.         TimerTaskDemo myTask2 = new TimerTaskDemo("Second task");   
  27.         myTask2.start(0,1);   
  28.   
  29.         try{   
  30.             Thread.sleep(6000);   
  31.         }   
  32.         catch(InterruptedException e){               
  33.         }      
  34.            
  35.         myTask1.end();   
  36.         myTask2.end();//程序结束时用cancel()结束Timer   
  37.   
  38.     }   
  39.     public void start(int delay, int internal) {   
  40.         myTimer.schedule(this, delay * 1000, internal * 1000); //利用timer.schedule方法   
  41.     }   
  42.     public void end(){   
  43.         myTimer.cancel();   
  44.     }   
  45. }   
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics