Java タイマー
Timer
は、ユーザーが将来のイベントをスケジュールできるようにする Java プログラミング言語で利用可能なサービスです。これらの将来のイベントは、1 回の場合もあれば、一定の時間間隔で繰り返す場合もあります。将来のイベントを開始するために使用するトリガーが存在する可能性があります。
Java で Timer
を使用して 1 回限りのタスクをスケジュールする
import java.util.Timer;
import java.util.TimerTask;
public class StopWatch {
Timer timer;
public StopWatch(int seconds) {
timer = new Timer();
timer.schedule(new StopTask(), seconds * 1000);
}
public static void main(String[] args) {
new StopWatch(10);
System.out.println("StopWatch Started.");
}
class StopTask extends TimerTask {
public void run() {
System.out.println("Time Up!");
timer.cancel();
}
}
}
上記のコードブロックでは、StopWatch
クラスという名前のパブリッククラスを作成しました。パブリックコンストラクタがあり、数秒で時間がかかります。コンストラクターブロックで、タイマーインスタンスが作成されます。タイマーインスタンスを介して、schedule
メソッドが呼び出されます。このメソッドタスクは、特定のイベントを指定された時間にスケジュールすることです。これは、2つのパラメーターTimerTask
インスタンスと遅延を取ります。遅延をミリ秒単位で定義します。このメソッドは、定義された指定された遅延が無効な場合は IllegalArgumentException
をスローし、提供されたタスクがすでにスケジュールまたはキャンセルされている場合は IllegalArgumentException
をスローします。また、提供されたタスクインスタンスが null の場合、NullPointerException
をスローします。
コンストラクターのすぐ下に、実際の実行が開始される main
メソッドがあります。遅延が定義された StopWatch
クラスの新しいインスタンスを作成し、コンストラクターブロックのステートメントを内部的に実行します。
main
メソッドの下に、TimerTask
抽象クラスを拡張する StopTask
という名前の内部クラスが定義されています。TimerTask
は、run
メソッドと呼ばれる抽象メソッドを持つ抽象クラスです。メソッドは StopTask
クラスでオーバーライドされる必要があり、オーバーライドされない場合は、クラス自体が抽象になる必要があります。run
メソッドでは、cancel
メソッドでタイマーを停止しました。このメソッドは、現在スケジュールされているタスクをすべて破棄し、タイマータスクを終了します。
以下は、上記のコードブロックの出力です。2 行目は、schedule メソッドの遅延が発生したときに出力されます。
StopWatch Started.
Time Up!
Java で繰り返しタイマーをスケジュールする
上記のコードを変更して、繰り返しタイマーを作成します。繰り返しタイマーは、一定の時間間隔で繰り返し実行されます。
以下のコードブロックでは、Timer
インスタンスを作成しました。インスタンス変数の使用は、将来のイベントをスケジュールするメソッド scheduleAtFixedRate
メソッドを呼び出すことです。このメソッドにはさまざまな実装があります。使用したものは 3つのパラメーターを取ります。まず、TimerTask
インスタンスは、将来実行したいアクションに関連するステートメントを保持します。次に、delay
変数は、タスクまたはイベントの実行にかかる時間を定義します。最後は、イベントの連続する呼び出し間の時間を定義する period
です。このメソッドは、NullPointerException IllegalArgument
および IllegalState
例外を含む例外をスローします。
import java.util.Timer;
import java.util.TimerTask;
public class RepeatedTimer {
public static void main(String[] args) {
Timer timer = new Timer();
System.out.println("Stop Watch Started.");
timer.scheduleAtFixedRate(new RepeatedTask(), 500, 1000);
}
static class RepeatedTask extends TimerTask {
public void run() {
System.out.println("Running!");
}
}
}
以下は、予定されている将来のイベントの終わりのない結果です。
Running!
Running!
Running!
Running!
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn