java.utilツールのTimerおよびTimerTaskクラス

JDK8オンラインAPI中国語マニュアル

JDK8オンラインAPI英語マニュアル

TimerおよびTimerTaskクラス

   java.utilが提供する興味深い便利な機能は、将来の特定の時間にタスクをスケジュールする機能です。この機能をサポートするクラスは、TimerとTimerTaskです。これらのクラスを使用すると、バックグラウンドで実行され、特定の瞬間を待つスレッドを作成できます。時間が来ると、スレッドにリンクされているタスクが実行されます。特定の期間中に繰り返し実行および実行されるタスクをスケジュールするために使用できるさまざまなオプションがあります。Threadクラスを使用すると、特定の時間に実行するタスクをいつでも手動で作成できますが、TimerおよびTimerTaskはこのプロセスを大幅に簡略化します。
   TimerとTimerTaskは連携して動作します。Timerクラスは、タスクをスケジュールするために使用されます。スケジュールされたタスクは、TimerTaskクラスのインスタンスである必要があります。したがって、タスクをスケジュールするには、最初にTimerTaskオブジェクトを作成してから、Timerインスタンスを使用してタスクの実行をスケジュールする必要があります。
   TimerTaskはRunnableインターフェースを実装しているため、実行用のスレッドを作成するために使用できます。TimerTaskのコンストラクタは次のとおりです。

protected TimerTask()

   表1は、TimerTaskクラスによって定義されるメソッドを示しています。run()メソッドは抽象的であるため、書き換える必要があることに注意してください。run()メソッドには、実行されるコードが含まれています。このメソッドは、Runnableインターフェースによって定義されます。したがって、時間指定タスクを作成する最も簡単な方法は、TimerTaskクラスを拡張し、run()メソッドをオーバーライドすることです。

表1 TimerTaskクラスによって定義されるメソッド
方法 描 述
boolean cancel() タスクを終了します。タスクが正常にブロックされた場合はtrue、それ以外の場合はfalse
抽象void run() スケジュールされたタスクのコードが含まれています
longchedExecutionTime() スケジュールされたタスクが最後に実行された時刻を返します

   タスクを作成した後、Timerクラスオブジェクトを使用して、タスクの実行をスケジュールできます。Timerクラスのコンストラクタは次のとおりです。

Timer()
Timer(boolean DThread)
Timer(String tName)
Timer(String tName,boolean DThread)

   最初のバージョンで作成されたTimerオブジェクトは、通常のスレッドとして実行されます。2番目のバージョンでは、DThreadがtrueの場合、デーモンスレッドが実行されます。プログラムの残りの部分が実行され続ける限り、デーモンスレッドが実行されます。3番目と4番目のバージョンでは、タイマースレッドの名前を指定できます。表2は、Timerクラスによって定義されるメソッドを示しています。

表2 Timerクラスによって定義されるメソッド
方法 描 述
void cancel() タイマースレッドをキャンセル
int purge() キャンセルされたタスクをスケジュールされたタスクから削除する
void schedule(TimerTask TTask、long wait) TTaskは、パラメータwaitによって渡された期間の後に実行されるようにスケジュールされています。待機パラメータの単位はミリ秒です。
void schedule(TimerTask TTask、long wait、long repeat) TTaskは、パラメータwaitによって渡された期間の後に実行されるようにスケジュールされ、タスクはrepeatで指定された時間間隔で繰り返し実行されます。待機および繰り返しパラメータの単位はミリ秒です
void schedule(TimerTask TTask、Date targetTime) TTaskは、targetTimeで指定された時間に実行されるようにスケジュールされています
void schedule(TimeTask TTask、Date targetTime、long repeat) TTaskは、targetTimeで指定された時間に実行されるようにスケジュールされ、タスクはrepeatで渡された間隔で繰り返し実行されます。繰り返しパラメータの単位はミリ秒です
void scheduleAtFixedRate(TimerTask TTask、long wait、long repeat) TTaskは、パラメータwaitによって渡された期間の後に実行されるようにスケジュールされ、タスクはrepeatで指定された時間間隔で繰り返し実行されます。待機および繰り返しパラメータの単位はミリ秒です。繰り返される各実行の時間は、前の実行の時間ではなく、最初の実行の時間に関連しているため、実行の全体的なレートは固定されています
void scheduleAtFixedRate(TimerTask TTask、Date targetTime、long repeat) TTaskは、targetTimeで指定された時間に実行されるようにスケジュールされ、タスクはrepeatで渡された間隔で繰り返し実行されます。repeatパラメータの単位はミリ秒です。繰り返される各実行の時間は、前回の実行の時間ではなく、最初の実行の時間に関連しているため、全体の実行速度は固定されています

   Timerオブジェクトを作成した後、作成したTimerオブジェクトでschedule()メソッドを呼び出して、タスクをスケジュールできます。表2に示すように、schedule()メソッドには多くの形式があり、タスクは複数の方法でスケジュールできます。
   デーモン以外のタスクを作成する場合は、プログラムの終了時にキャンセル()メソッドを呼び出してタスクを終了する必要があります。これを行わないと、プログラムがしばらく中断される場合があります。
   次のプログラムは、TimerクラスとTimerTaskクラスを示しています。プログラムはスケジュールされたタスクを定義し、タスクのrun()メソッドは「タイマータスクが実行されました」というメッセージを表示します。このタスクは、最初の1秒の遅延後に実行されるようにスケジュールされ、0.5秒ごとに実行されます。

//Demonstrate Timer and TimerTask.
import java.util.TimerTask;
class MyTimerTask extends TimerTask {
    @Override
    public void run() {
        System.out.println("Timer task executed.");
    }
}
import java.util.Timer;
class TTest {
    public static void main(String[] args) {
        MyTimerTask myTask = new MyTimerTask();
        Timer myTimer = new Timer();
        /*Set an initial delay of 1 second,
        then repeat every half second.
         */
        myTimer.schedule(myTask,1000,500);
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        myTimer.cancel();
    }
}
元の記事を59件公開 20 獲得 ビュー3634

おすすめ

転載: blog.csdn.net/qq_34896730/article/details/104228535