Javaタイマーの例_動力ノードJava学院の整理

4627 ワード

Timerクラスはタスクを実行するためのクラスであり、TimerTaskをパラメータとして受け入れています。この二つの種類は非常に便利で、タイマーに対する私たちの圧倒的な需要を達成できます。
Timerは2つのタスクを実行するモードがあり、最も一般的なのはscheduleであり、2つの方法でタスクを実行できます。
1:ある時間(Data)に、
2:タスク実行の頻度は、ある一定の時間後に指定できます。
TimerTest.Java:

 package com.bjpowernode.test; 
 import java.io.IOException; 
 import java.util.Timer; 
 public class TimerTest{   
   public static void main(String[] args){   
     Timer timer = new Timer();   
     timer.schedule(new MyTask(), 1000, 2000);// 1       ,    2     ,      Data  ,                 .   
     while(true){//           ,               
       try{   
         int in = System.in.read();  
         if(in == 's'){   
           timer.cancel();//             
           break; 
         }   
       } catch (IOException e){   
         // TODO Auto-generated catch block   
         e.printStackTrace();   
       }   
     }   
   }  
   static class MyTask extends java.util.TimerTask{   
     public void run(){   
       System.out.println("________");   
     }   
   }  
 } 
このような運転時:
プログラムが起動して1秒後にコンソールで「――――」を印刷します。
二秒間隔でMyTaskのrun()メソッドを実行し、「――――」を印刷します。
このようにずっと循環します
コンソールにs文字を入力すると、timerタイマーが動作をキャンセルします。
ループ全体から飛び出す
プログラム運転終了!
TimerTest 2.java:

 package com.bjpowernode.test; 
 import java.io.IOException; 
 import java.util.Date; 
 import java.util.Timer; 
 public class TimerTest2{   
   public static void main(String[] args){   
     Timer timer = new Timer();   
     MyTask myTask1 = new MyTask();   
     MyTask myTask2 = new MyTask();   
     myTask2.setInfo("myTask-info-2");   
    timer.schedule(myTask1, 1000, 2000); //  1       ,       。  
     timer.scheduleAtFixedRate(myTask2, 2000, 3000);  //  2 2               (3      ) 
     while (true){   
       try{   
         //             
         byte[] info = new byte[1024];   
         int len = System.in.read(info);  
         String strInfo = new String(info, 0, len, "GBK");//           
         if (strInfo.charAt(strInfo.length() - 1) == ' '){   
           strInfo = strInfo.substring(0, strInfo.length() - 2);   
         }  
         if (strInfo.startsWith("Cancel-1")){   
           myTask1.cancel();//    1   
          //          myTask2      ,      break.              
           // myTask2   ,  ,               .   
         } else if (strInfo.startsWith("Cancel-2")){   
           myTask2.cancel(); //    2  
         } else if (strInfo.startsWith("Cancel-All")){   
           timer.cancel();//  Timer   
           break;   
         } else{   
           //   myTask1    ,   ^_^   
           myTask1.setInfo(strInfo);   
         }   
       } catch (IOException e){   
         // TODO Auto-generated catch block   
         e.printStackTrace();   
       }   
     }   
   }   
   static class MyTask extends java.util.TimerTask{   
     String info = "INFO"; 
     @Override   
     public void run(){   
       // TODO Auto-generated method stub   
       System.out.println(new Date() + "   " + info);   
     }   
     public String getInfo(){   
       return info;   
     }   
     public void setInfo(String info){   
       this.info = info;   
     }   
   }   
 }   
このような二つのタイミングタスクmystask 1とmystask 2を作成しました。
mystask 1タスクは上のTimerTest類の例と同じように使われています。指定されたタスクを指定の遅延後から繰り返す固定遅延実行を行います。
mystask 2タスクは上のような使い方とは違って、timer.scheduleAt FixedRateはtimerタイマーのscheduleAt Fixedite()方法で実行します。
scheduleAt FixedRate()方法はAPI 1.6.0においてこのように定義されている。
指定されたタスクを指定の時間から繰り返す固定レートで実行します。近似的に固定された時間間隔(指定された周期的な分離)で後続して実行されます。
ほぼ固定された時間間隔という意味は、固定速度実行において、設定された初期実行時間に対して、各実行をスケジュールすることである。ゴミ回収や他のバックグラウンドイベントなどの理由で、ある実行が遅延された場合、2回以上のスピードで連続して実行され、後続の実行が追いつきます。
Timer類の常用他の方法:
キャンセル()
このタイマーを終了して、現在設定されているすべてのタスクを破棄します。
purge()
このタイマのタスクキューからキャンセルしたすべてのタスクを削除します。
schedule(TimeTask task,Date time)
指定された時間に指定されたタスクを実行するように手配します。
TimerTask類の一般的な他の方法:
キャンセル()
このタイマータスクをキャンセルします。
run()
このタイマタスクで実行する操作。
scheduledExecution Time()
このタスクの最近の実行スケジュールを返します。
以上は小编が绍介したJavaタイマーの例です。皆さんに何かお聞きしたいことがあれば、メッセージをください。小编はすぐにご返事します。ここでも私たちのサイトを応援してくれてありがとうございます。