|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.Timer
public class Timer
バックグラウンドスレッドで将来実行されるタスクをスケジュールする、スレッドのための機能です。タスクは、1 回だけ、または定期的に繰り返し実行されるようにスケジュールされます。
各 Timer オブジェクトと対応するのは、タイマーのタスクをすべて連続して実行するために使用される、単一のバックグラウンドスレッドです。タイマータスクは迅速に実行される必要があります。タイマータスクの完了に時間がかかりすぎると、タイマーのタスク実行スレッドが「占有」されます。これにより後続のタスクの実行が遅れ、違反したタスクの完了時 (完了した場合) に、立て続けに「まとめて」実行されることになります。
Timer オブジェクトの最後のライブ参照が終了し、未処理のタスクがすべて実行されると、タイマーのタスク実行スレッドも同時に完了し、ガベージコレクトされます。ただし、これには限りなく長い時間がかかる場合があります。デフォルトでは、タスクの実行スレッドは「デーモンスレッド」としては実行されないため、アプリケーションが終了しないようにできます。タイマーのタスク実行スレッドをただちに完了させる場合、呼び出し側はタイマーの cancel メソッドを呼び出す必要があります。
stop メソッドの呼び出しなどによりタイマーのタスク実行スレッドが予想外の時間に終了した場合、タイマーのタスクをスケジュールしようとすると、タイマーの cancel メソッドが呼び出された場合と同様に、IllegalStateException が発生します。
このクラスはスレッドセーフです。外部の同期化を行わなくても、複数のスレッドで単一の Timer オブジェクトを共有できます。
このクラスでは、リアルタイムは保証されません。Object.wait(long) メソッドを使用して、タスクがスケジュールされます。
実装上の注意: このクラスは、同時にスケジュールされた多数のタスクをスケーリングします (数千でも問題はない)。タスクキューを表すためにバイナリヒープが内部的に使用されるため、タスクをスケジュールするコストは O(log n) になります。n は、同時にスケジュールされたタスクの数です。
実装上の注意: すべてのコンストラクタはタイマースレッドを開始します。
TimerTask
,
Object.wait(long)
コンストラクタの概要 | |
---|---|
Timer()
新しいタイマーを作成します。 |
|
Timer(boolean isDaemon)
デーモンとして実行されるように指定できる関連スレッドを持つ、新しいタイマーが作成されます。 |
|
Timer(String name)
指定された名前の関連するスレッドを持つ新しいタイマーが作成されます。 |
|
Timer(String name,
boolean isDaemon)
指定された名前の関連するスレッドを持つ新しいタイマーが作成されます。 |
メソッドの概要 | |
---|---|
void |
cancel()
現在スケジュールされているタスクを破棄して、このタイマーを終了します。 |
int |
purge()
取り消されたすべてのタスクを、このタイマーのタスクキューから削除します。 |
void |
schedule(TimerTask task,
Date time)
指定した時間に指定したタスクが実行されるようスケジュールします。 |
void |
schedule(TimerTask task,
Date firstTime,
long period)
指定したタスクが、指定した時間に開始され、「固定遅延実行」を繰り返すようにスケジュールします。 |
void |
schedule(TimerTask task,
long delay)
指定した遅延のあとに、指定したタスクが実行されるようスケジュールします。 |
void |
schedule(TimerTask task,
long delay,
long period)
指定したタスクが、指定した遅延のあとに開始され、「固定遅延実行」を繰り返すようにスケジュールします。 |
void |
scheduleAtFixedRate(TimerTask task,
Date firstTime,
long period)
指定したタスクが、指定した時間に開始され、「固定頻度実行」を繰り返すようにスケジュールします。 |
void |
scheduleAtFixedRate(TimerTask task,
long delay,
long period)
指定したタスクが、指定した遅延のあとに開始され、「固定頻度実行」を繰り返すようにスケジュールします。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public Timer()
Thread
,
cancel()
public Timer(boolean isDaemon)
isDaemon
- 関連するスレッドがデーモンとして実行される場合は trueThread
,
cancel()
public Timer(String name)
name
- 関連するスレッドの名前
NullPointerException
- 名前が null の場合Thread.getName()
,
Thread.isDaemon()
public Timer(String name, boolean isDaemon)
name
- 関連するスレッドの名前isDaemon
- 関連するスレッドがデーモンとして実行される場合は true
NullPointerException
- 名前が null の場合Thread.getName()
,
Thread.isDaemon()
メソッドの詳細 |
---|
public void schedule(TimerTask task, long delay)
task
- スケジュールされるタスクdelay
- タスクが実行される前のミリ秒単位の遅延
IllegalArgumentException
- delay が負の値の場合、または delay + System.currentTimeMillis() が負の値の場合
IllegalStateException
- タスクがすでにスケジュールされたか取り消された場合、またはタイマーが取り消された場合public void schedule(TimerTask task, Date time)
task
- スケジュールされるタスクtime
- タスクが実行される時間
IllegalArgumentException
- time.getTime() が負の値の場合
IllegalStateException
- タスクがすでにスケジュールされたか取り消された場合、タイマーが取り消された場合、またはタイマースレッドが終了した場合public void schedule(TimerTask task, long delay, long period)
固定遅延実行では、前の実行の実際の実行時間を基準にしてそれぞれの実行がスケジュールされます。何らかの理由で実行が遅延した場合 (ガベージコレクション、その他のバックグラウンド作業など)、そのあとの実行も遅延されます。最終的に、実行の頻度は通常、指定した期間の対応する頻度よりも若干遅くなります (基本となる Object.wait(long) を支えているシステムクロックが正確という前提で)。
固定遅延実行は、「円滑さ」を必要とする作業の繰り返しに適しています。つまり、長時間の実行よりも短時間の実行で頻度の正確さを維持する必要のある作業に適しています。これには、一定の間隔でカーソルを点滅させるなど、ほとんどのアニメーションタスクが含まれます。また、キーが押されている間は文字を自動的に繰り返すなど、ユーザの入力に応じて一定の活動が実行されるタスクも含まれます。
task
- スケジュールされるタスクdelay
- タスクが実行される前のミリ秒単位の遅延period
- 連続するタスク実行のミリ秒単位の時間
IllegalArgumentException
- delay が負の値の場合、または delay + System.currentTimeMillis() が負の値の場合
IllegalStateException
- タスクがすでにスケジュールされたか取り消された場合、タイマーが取り消された場合、またはタイマースレッドが終了した場合public void schedule(TimerTask task, Date firstTime, long period)
固定遅延実行では、前の実行の実際の実行時間を基準にしてそれぞれの実行がスケジュールされます。何らかの理由で実行が遅延した場合 (ガベージコレクション、その他のバックグラウンド作業など)、そのあとの実行も遅延されます。最終的に、実行の頻度は通常、指定した期間の対応する頻度よりも若干遅くなります (基本となる Object.wait(long) を支えているシステムクロックが正確という前提で)。
固定遅延実行は、「円滑さ」を必要とする作業の繰り返しに適しています。つまり、長時間の実行よりも短時間の実行で頻度の正確さを維持する必要のある作業に適しています。これには、一定の間隔でカーソルを点滅させるなど、ほとんどのアニメーションタスクが含まれます。また、キーが押されている間は文字を自動的に繰り返すなど、ユーザの入力に応じて一定の活動が実行されるタスクも含まれます。
task
- スケジュールされるタスクfirstTime
- タスクが実行される最初の時間period
- 連続するタスク実行のミリ秒単位の時間
IllegalArgumentException
- time.getTime() が負の値の場合
IllegalStateException
- タスクがすでにスケジュールされたか取り消された場合、タイマーが取り消された場合、またはタイマースレッドが終了した場合public void scheduleAtFixedRate(TimerTask task, long delay, long period)
固定頻度実行では、最初の実行のスケジュールされた実行時間を基準にしてそれぞれの実行がスケジュールされます。何らかの理由で実行が遅延した場合 (ガベージコレクションまたはその他のバックグラウンド作業など)、「遅れを取り戻す」ために 2 つ以上の実行が連続して行われます。最終的に実行の頻度は、指定した期間の対応する頻度と同じになります (基本となる Object.wait(long) を支えているシステムクロックが正確という前提で)。
固定頻度実行は、1 時間ごとにチャイムを鳴らしたり、特定の時間に毎日スケジュールされた保守を実行するなど、「絶対」時間を反映する作業を繰り返すのに適しています。また、10 秒ごとに刻まれるカウントダウンタイマーなど、決まった数の実行の合計時間が重要な作業を繰り返すのにも適しています。さらに、固定頻度実行は、相互に同期化を保持する必要がある複数の繰り返しタイマータスクをスケジュールするのにも適しています。
task
- スケジュールされるタスクdelay
- タスクが実行される前のミリ秒単位の遅延period
- 連続するタスク実行のミリ秒単位の時間
IllegalArgumentException
- delay が負の値の場合、または delay + System.currentTimeMillis() が負の値の場合
IllegalStateException
- タスクがすでにスケジュールされたか取り消された場合、タイマーが取り消された場合、またはタイマースレッドが終了した場合public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
固定頻度実行では、最初の実行のスケジュールされた実行時間を基準にしてそれぞれの実行がスケジュールされます。何らかの理由で実行が遅延した場合 (ガベージコレクションまたはその他のバックグラウンド作業など)、「遅れを取り戻す」ために 2 つ以上の実行が連続して行われます。最終的に実行の頻度は、指定した期間の対応する頻度と同じになります (基本となる Object.wait(long) を支えているシステムクロックが正確という前提で)。
固定頻度実行は、1 時間ごとにチャイムを鳴らしたり、特定の時間に毎日スケジュールされた保守を実行するなど、「絶対」時間を反映する作業を繰り返すのに適しています。また、10 秒ごとに刻まれるカウントダウンタイマーなど、決まった数の実行の合計時間が重要な作業を繰り返すのにも適しています。さらに、固定頻度実行は、相互に同期化を保持する必要がある複数の繰り返しタイマータスクをスケジュールするのにも適しています。
task
- スケジュールされるタスクfirstTime
- タスクが実行される最初の時間period
- 連続するタスク実行のミリ秒単位の時間
IllegalArgumentException
- time.getTime() が負の値の場合
IllegalStateException
- タスクがすでにスケジュールされたか取り消された場合、タイマーが取り消された場合、またはタイマースレッドが終了した場合public void cancel()
このタイマーによって呼び出されたタイマータスクの実行メソッドからこのメソッドを呼び出すと、進行中のタスク実行は、このタイマーで実行される最後のタスク実行になります。
このメソッドは、繰り返し呼び出されます。2 回目以降の呼び出しには、効果はありません。
public int purge()
大半のプログラムは、このメソッドを呼び出す必要はありません。このメソッドを使用するのは、多数のタスクを取り消す必要のあるアプリケーションであり、そのようなアプリケーションはめったに存在しません。このメソッドを呼び出すと、処理時間よりメモリ効率が優先されるため、メソッドのランタイムが n + c log n に比例する場合があります。ここで、n はキュー内のタスクの数、c は取り消されたタスクの数を表します。
このタイマーでスケジュールされたタスク内から、このメソッドを呼び出すことができます。
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。