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 thi* **ecution.
       // Perform the task
   }

  4.protected TimerTask()


例:

java 代码
  1. import java.util.*;   
  2. import java.io.*;   
  3.   
  4.   
  5. public class doTask extends TimerTask {   
  6.     String index;   
  7.     Timer myTimer = new Timer();   
  8.     public doTask(String index) {   
  9.         this.index = index;   
  10.     }   
  11.   
  12.     public void run() {   
  13.         System.out.println(index);   
  14.     }   
  15.   
  16.     public static void main(String args[]) {   
  17.         doTask myTask1 = new doTask("First task");   
  18.         myTask1.start(0,3);   
  19.         doTask myTask2 = new doTask("Second task");   
  20.         myTask2.start(0,1);   
  21.   
  22.         try{   
  23.             Thread.sleep(6000);   
  24.         }   
  25.         catch(InterruptedException e){               
  26.         }      
  27.            
  28.         myTask1.end();   
  29.         myTask2.end();//程序结束时用cancel()结束Timer   
  30.            
  31.     }   
  32.   
  33.     public void start(int delay, int internal) {   
  34.         myTimer.schedule(this, delay * 1000, internal * 1000); //利用timer.schedule方法   
  35.     }   
  36.     public void end(){   
  37.         myTimer.cancel();   
  38.     }   
  39. }   
输出:
First task
Second task
Second task
Second task
First task
Second task
Second task
Second task
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值