Java Mania

Java Mania

Timer

TimerTaskを実行するスケジュール作成用クラス。 コンストラクタで引数としてtrueを渡すとTimerに割り付けられたタスクがデーモンスレッドによって 実行されるので、それより他に有効なスレッドがなくなれば処理を終了する。 無指定・falseの場合はmainメソッドが終了してもタスクを実行し続ける。
※TimerTaskクラスに関してはここを参照。
HomePageTop▲

How To Use -使用方法-

Timerクラスは下記のように使用する。

コンストラクタの説明
Timer()
新しいタイマーを作成する。デーモンとして実行されない。
public Timer(boolean isDaemon)
新しいタイマーを作成する。第1引数のisDaemonがtrueの場合、デーモンとして実行される。
メソッドの説明
※全てのメソッドを網羅していないので、詳細はAPIリファレンスを参照する。
public void cancel()
現在スケジュールされているタスクを破棄して、このタイマーを終了する。 実行中のタスクには影響しない。
public void schedule(TimerTask task,Date time[,long period])
第1引数に指定されたtaskを第2引数に指定された日付に実行されるようスケジュールする。
第3引数のperiodが指定された場合、最初のタスク以降その間隔ごとにtaskを実行する。
public void schedule(TimerTask task,long delay[,long period])
第1引数に指定されたtaskを第2引数に指定された時間後に実行されるようスケジュールする。
第3引数のperiodが指定された場合、最初のタスク以降その間隔ごとにtaskを実行する。
public void scheduleAtFixedRate(TimerTask task,long delay[,long period])
第1引数に指定されたtaskを第2引数に指定された日付に実行されるようスケジュールする。
第3引数のperiodが指定された場合、最初のタスク以降その間隔ごとにtaskを実行する。
※scheduleとscheduleAtFixedRateの違いは、periodを計算するときの基準とする時間である。 scheduleは前回のタスクの実行開始時間を基準にしてperiodを計算するが、 scheduleAtFixedRateは最初のタスクの実行開始時間(タスクの実行された回数×period)を 基準にして計算する。
HomePageTop▲

Source -TimerTaskTest.java-

package mania.test;

import java.util.TimerTask;

public class TimerTaskTest extends TimerTask
{
  // TimerTaskの使用方法
  public void run()
  {
    System.out.println(System.currentTimeMillis() + ":タスクの実行");
  }
}

Source -TimerTest.java-

package mania.test;

import java.util.Timer;
import java.util.TimerTask;

public class TimerTest
{
  // Timerの使用方法
  public static void main(String[] args)
  {
    System.out.println("===実行結果===");
    Timer timer = new Timer(true);
    TimerTask task = new TimerTaskTest();
    // 1秒後から2秒間隔でタスクを実行
    timer.schedule(task, 1000, 2000);

    // タスクをスケジュールされた時間
    System.out.println(task.scheduledExecutionTime() + "スケジュールされた時間");

    // 8秒間SLEEP
    try
    {
      Thread.sleep(8000);
    }
    catch(InterruptedException e)
    {
      e.printStackTrace();
    }

    // タスクを終了する
    task.cancel();

    // タスクをスケジュールされた時間
    System.out.println(task.scheduledExecutionTime() + "スケジュールされた時間");
  }
}
HomePageTop▲

Results -実行結果-


===実行結果===
1141005674963スケジュールされた時間
1141005676963:タスクの実行
1141005678963:タスクの実行
1141005680963:タスクの実行
1141005682963:タスクの実行
1141005682963スケジュールされた時間

HomePageTop▲

Copyright (C) 2006, JavaMania. All Rights Reserved.