ホームページ >Java >&#&チュートリアル >Javaタイマー(Timer、TimerTask)の詳細説明とサンプルコード

Javaタイマー(Timer、TimerTask)の詳細説明とサンプルコード

高洛峰
高洛峰オリジナル
2017-01-11 16:14:431523ブラウズ

Java Timer

JAVAでタイマー機能を実装するために使用される2つのクラスは、TimerとTimerTaskです

Timerクラスは、パラメータとしてTimerTaskを受け取ります

Timerには2つの実行タスクモードがあります。最も一般的に使用されるのはスケジュールです。これは 2 つの方法でタスクを実行できます: 1: 特定の時間 (Data)、2: 特定の固定時間後 (int遅延) どちらの方法も指定できます。この記事では 2 つの例があります。 1 つは内部クラスを使用する簡単な例です

1. 簡単な例

まずクラスを作成します

public class TimeTest {
public static void main(String[] args) {
   
   Timer timer = new Timer();
   timer.schedule(new MyTask(),1000,2000);
}

次にクラスを作成します

public class MyTask extends TimerTask{
 
  @Override
  public void run() {
 System.out.println("开始运行");    
  }
}

このようにして、シンプルなタイマーを完成させることができます。しかし、これら 2 つのクラスを 1 つのクラスに記述する別の方法があります。これは内部クラスです

2. 内部クラス

public class SerchRun {
 
  protected static void startRun(){
    Timer timer = new Timer();
     TimerTask task =new TimerTask(){
       public void run(){
         System.out.println("开始运行"); //在这写你要调用的方法
       }
     };
   timer.scheduleAtFixedRate(task, new Date(),2000);//当前时间开始起动 每次间隔2秒再启动
   // timer.scheduleAtFixedRate(task, 1000,2000); // 1秒后启动 每次间隔2秒再启动         
   }
   
  public static void main(String[] args) {
   SerchRun.startRun();
  }
}

スケジュールとスケジュールAtFixedRateの違いは、実行を開始する時刻を現在のシステムの実行時間より前に指定することです。 、scheduleAtFixedRate は経過時間を期間として実行しますが、スケジュールは経過時間をカウントしません。

例:

SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date d1 = fTime.parse("2005/12/30 14:10:00");
  
 t.scheduleAtFixedRate(new TimerTask(){
  public void run()
  {
    System.out.println("this is task you do6");
  }
 },d1,3*60*1000);

間隔は 3 分、指定された開始時刻は 2005/12/30 14:10:00 にこのプログラムを実行すると、すぐに 3 回印刷されます

this is task you do6   //14:10
this is task you do6   //14:13
this is task you do6   //14:16

そして、次の実行は 14:20 ではなく 14:19 であることに注意してください。つまり、計時は実行時間ではなく、指定された開始時間から始まります。

しかし、上記のスケジュール方法が使用され、間隔が 3 分で、指定された開始時刻が 2005/12/30 14:10:00 である場合、プログラムが 14:17:00 に実行されると、プログラムは直ちに実行されます。そして、次回の実行時刻は14:10から始まる期間(14:19)ではなく、14:20となります。

読んでいただきありがとうございます、皆さんのお役に立てれば幸いです、このサイトをサポートしていただきありがとうございます!

Java タイマー (Timer、TimerTask) の詳細な説明とサンプル コード関連の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。