public interface ScheduledExecutorService extends ExecutorService
ExecutorService
です。
schedule
メソッドは、さまざまな遅延の設定されたタスクを作成し、実行の取り消しまたはチェックに使用できるタスク・オブジェクトを返します。scheduleAtFixedRate
メソッドおよびscheduleWithFixedDelay
メソッドは、取り消されるまで定期的に実行されるタスクを作成および実行します。
Executor.execute(Runnable)
とExecutorService
の各submit
メソッドを使用して送信されたコマンドは、要求された遅延が0としてスケジュールされます。schedule
メソッドではゼロまたは負の遅延(期間は除く)も許可され、その場合はただちに実行する要求として扱われます。
すべてのschedule
メソッドは、相対的な遅延および期間を引数として受け入れますが、絶対日時は受け入れません。Date
として表される絶対時間を必要な形式に変換するのは簡単です。たとえば、特定の将来のdate
にスケジュール設定するには、schedule(task, date.getTime() - System.currentTimeMillis(), TimeUnit.MILLISECONDS)
を使用できます。ただしネットワーク時間同期プロトコルやクロックのずれなどの要因があるため、相対的な遅延の有効期限(タスクが有効になる時点)が現在のDate
と一致する必要はありません。
Executors
クラスは、このパッケージで提供されるScheduledExecutorService実装のための便利なファクトリ・メソッドを提供します。
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}
修飾子と型 | メソッドと説明 |
---|---|
<V> ScheduledFuture<V> |
schedule(Callable<V> callable, long delay, TimeUnit unit)
指定された遅延後に有効になるScheduledFutureを作成して実行します。
|
ScheduledFuture<?> |
schedule(Runnable command, long delay, TimeUnit unit)
指定された遅延後に有効になる単発的なアクションを作成して実行します。
|
ScheduledFuture<?> |
scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
指定された初期遅延の経過後にはじめて有効になり、その後は指定された期間ごとに有効になる定期的なアクションを作成して実行します。つまり実行は
initialDelay 後に開始され、その後はinitialDelay+period 、initialDelay+2 * period というようになります。 |
ScheduledFuture<?> |
scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
指定された初期遅延の経過後にはじめて有効になり、その後は実行の終了後から次の開始までの指定の遅延ごとに有効になる定期的なアクションを作成して実行します。
|
awaitTermination, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated, shutdown, shutdownNow, submit, submit, submit
ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
command
- 実行するタスクdelay
- 現在から遅延実行までの時間unit
- delayパラメータの時間単位get()
メソッドは完了時にnull
を返すRejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- コマンドがnullの場合<V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
V
- 呼出し可能タスクの結果の型callable
- 実行する関数delay
- 現在から遅延実行までの時間unit
- delayパラメータの時間単位RejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- 呼出し可能レイアウトがnullの場合ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
initialDelay
後に開始され、その後はinitialDelay+period
、initialDelay+2 * period
というようになります。タスクを実行して例外が発生すると、以降の実行は抑止されます。そうでない場合は、executorの取り消しまたは終了によってのみタスクは終了します。このタスクを実行するのに指定の期間(period)より長い時間がかかる場合、以降の実行は遅れて開始されることがありますが、並行して実行はされません。command
- 実行するタスクinitialDelay
- 最初の遅延実行までの時間period
- 連続する実行の間隔unit
- initialDelayおよびperiodパラメータの時間単位get()
メソッドは取消し時に例外をスローするRejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- コマンドがnullの場合IllegalArgumentException
- periodが0以下である場合ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
command
- 実行するタスクinitialDelay
- 最初の遅延実行までの時間delay
- 実行の終了後から次の開始までの遅延unit
- initialDelayおよびdelayパラメータの時間単位get()
メソッドは取消し時に例外をスローするRejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- コマンドがnullの場合IllegalArgumentException
- delayが0以下である場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.