| 
          
         | 
         
          
          
          本文参考: 
《Java面向对象编程》,作者:孙卫琴 
《漫画Java编程》,作者:孙卫琴,杜聚宾 
 
 
 
在JDK的java.util包中提供了一个实用类Timer,它能够定时执行特定的任务。TimerTask类表示定时器执行的一项任务。以下Machine类演示了定时器的用法。package usetimer; 
import java.util.Timer; 
import java.util.TimerTask; 
public class Machine extends Thread{ 
  private int a; 
 
  public void start(){ 
    super.start(); 
    Timer timer=new Timer(true);  //把与Timer关联的线程设为后台线程 
  
    TimerTask task=new TimerTask(){  //匿名类 
      public void run(){ 
        reset(); 
      } 
    }; 
   
    timer.schedule(task,10,50);  //设置定时任务 
  } 
  public void reset(){a=0;} 
  public void run(){ 
    for(int i=0;i<1000;i++){ 
      System.out.println(getName()+":"+a++); 
      yield(); 
    } 
  } 
  public static void main(String args[])throws Exception{ 
    Machine machine=new Machine(); 
    machine.start(); 
  } 
} |  
  java.util.TimerTask类是一个抽象类,它实现了Runnable接口。在Machine类的start()方法中定义的匿名类继承TimerTask类,它的run()方法表示定时器需要定时完成的任务。 
 
java.util.Timer类的构造方法有几种重载形式,有一种构造方法Timer(boolean isDaemon)允许把与Timer关联的线程设为后台线程。Timer类本身并不是线程类,但是在它的实现中,利用线程来执行定时任务。 
 
Timer类的schedule(TimerTask task, long delay, long period)方法用来设置定时器需要定时执行的任务。task参数表示任务,delay参数表示延迟执行的时间,以毫秒为单位,period参数表示每次执行任务的间隔时间,以毫秒为单位。例如: 
 
| timer.schedule(task,10,50); |  
  以上代码表明定时器将在10毫秒以后开始执行task任务(即执行TimerTask实例的run()方法),以后每隔50毫秒重复执行一次task任务。 
 
Timer类的schedule方法还有一种重载形式:schedule(TimerTask task, long delay)。如果使用这个方法,那就表明仅仅执行一次任务,例如: 
 
 以上代码表明定时器将在10毫秒以后开始执行task任务,以后不再重复执行。 
同一个定时器对象可以执行多个定时任务,例如: 
 
timer.schedule(task1,0,1000); 
timer.schedule(task2,0,500); |  
  以上代码表明定时器会执行两个定时任务,第一个任务每隔1秒执行一次,第二个任务每隔500毫秒执行一次。 
 
 
 
程序猿的技术大观园:www.javathinker.net 
 
 
          
          
          
            
  
            [这个贴子最后由 admin 在 2022-03-15 14:40:06 重新编辑]
          
          
         | 
        
      
 
          |