インタフェースScheduledExecutorService
- すべてのスーパー・インタフェース:
AutoCloseable, Executor, ExecutorService
- 既知のすべての実装クラス:
ForkJoinPool, ScheduledThreadPoolExecutor
ExecutorServiceです。
scheduleメソッドは、様々な遅延を伴うタスクを作成し、実行の取消しまたはチェックに使用できるScheduledFutureオブジェクトを返します。 遅延が経過すると、タスクの実行が有効になり、他のExecutorServiceタスクに従って動作します。ただし、scheduleAtFixedRateおよびscheduleWithFixedDelayメソッドは、取り消されるまで定期的に実行されるタスクを作成して実行します。
Executor.execute(Runnable)とExecutorServiceの各submitメソッドを使用して送信されたコマンドは、要求された遅延が0としてスケジュールされます。 scheduleメソッドではゼロまたは負の遅延(期間は除く)も許可され、その場合はただちに実行する要求として扱われます。
すべてのscheduleメソッドは、相対的な遅延および期間を引数として受け入れますが、絶対日時は受け入れません。 Dateとして表される絶対時間を必要な形式に変換するのは簡単です。 たとえば、特定の将来のdateにスケジュール設定するには、schedule(task, date.getTime() - System.currentTimeMillis(), TimeUnit.MILLISECONDS)を使用できます。 ただしネットワーク時間同期プロトコルやクロックのずれなどの要因があるため、相対的な遅延の有効期限(タスクが有効になる時点)が現在のDateと一致する必要はありません。
Executorsクラスは、このパッケージで提供されるScheduledExecutorService実装のための便利なファクトリ・メソッドを提供します。
使用例
次のクラスには、1時間の間、10秒ごとにビープ音が鳴るようにScheduledExecutorServiceを設定するメソッドがあります。import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
Runnable beeper = () -> System.out.println("beep");
ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
Runnable canceller = () -> beeperHandle.cancel(false);
scheduler.schedule(canceller, 1, HOURS);
}
}- 導入されたバージョン:
- 1.5
-
メソッドのサマリー
修飾子と型メソッド説明指定された遅延後に実行可能になったワンショット・タスクを送信します。<V> ScheduledFuture<V> 指定された遅延後に実行できるようになった、値を返すワンショット・タスクを送信します。scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) 定期的なアクションを発行します。このアクションは、指定された初期遅延の後、次に指定された期間で実行できるようになります。つまり、実行は、initialDelay、initialDelay + period、initialDelay + 2 * periodなどの後に開始されます。scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) 定期的なアクションを発行します。このアクションは、指定された初期遅延の後に最初に実行可能になり、その後、ある実行の終了から次の実行の開始までの間に指定された遅延が発生します。インタフェースで宣言されたメソッド ExecutorService
awaitTermination, close, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated, shutdown, shutdownNow, submit, submit, submit修飾子と型メソッド説明booleanawaitTermination(long timeout, TimeUnit unit) シャットダウン要求後にすべてのタスクが実行を完了していたか、タイム・アウトが発生するか、現在のスレッドで割込みが発生するか、そのいずれかが最初に発生するまでブロックします。default voidclose()順序正しくシャットダウンを開始します。以前に送信されたタスクが実行されますが、新規タスクは受け入れられません。invokeAll(Collection<? extends Callable<T>> tasks) 指定されたタスクを実行し、すべて完了すると、ステータスと結果を含むFutureのリストを返します。invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) 指定されたタスクを実行し、すべてが完了するか時間切れになるか、そのいずれかが最初に発生した時点で、ステータスと結果を含むFutureのリストを返します。<T> TinvokeAny(Collection<? extends Callable<T>> tasks) 指定されたタスクを実行し、例外をスローせずに正常に完了したタスクが存在する場合は、その結果を返します。<T> TinvokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) 指定されたタスクを実行し、タイム・アウトが経過する前に例外をスローせずに正常に完了したタスクが存在する場合は、その結果を返します。booleanこのexecutorがシャットダウンしていた場合、trueを返します。booleanシャットダウンに続いてすべてのタスクが完了していた場合、trueを返します。voidshutdown()順序正しくシャットダウンを開始します。以前に送信されたタスクが実行されますが、新規タスクは受け入れられません。実行中のアクティブなタスクすべての停止を試み、待機中のタスクの処理を停止し、実行を待機していたタスクのリストを返します。Future<?> 実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。<T> Future<T> 実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。<T> Future<T> 値を返す実行用タスクを送信して、保留状態のタスク結果を表すFutureを返します。
-
メソッドの詳細
-
schedule
ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) 指定された遅延後に実行可能になったワンショット・タスクを送信します。- パラメータ:
command- 実行するタスクdelay- 現在から遅延実行までの時間unit- delayパラメータの時間単位- 戻り値:
- タスクの保留状態の完了を表すScheduledFuture。その
get()メソッドは完了時にnullを返す - スロー:
RejectedExecutionException- タスクの実行をスケジュールできない場合NullPointerException- コマンドまたはユニットがヌルの場合
-
schedule
<V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) 指定された遅延後に実行できるようになった、値を返すワンショット・タスクを送信します。- 型パラメータ:
V- コール可能結果のタイプ- パラメータ:
callable- 実行する関数delay- 現在から遅延実行までの時間unit- delayパラメータの時間単位- 戻り値:
- 結果を抽出または取り消すために使用できるScheduledFuture
- スロー:
RejectedExecutionException- タスクの実行をスケジュールできない場合NullPointerException- 呼び出し可能またはユニットがnullの場合
-
scheduleAtFixedRate
ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) 定期的なアクションを発行します。このアクションは、指定された初期遅延の後、次に指定された期間で実行できるようになります。つまり、実行は、initialDelay、initialDelay + period、initialDelay + 2 * periodなどの後に開始されます。タスク実行のシーケンスは、次の例外的な完了が発生するまで無期限に続きます:
- タスクは、戻された将来を介して「明示的に取消された」です。
- エグゼキュータが終了し、タスクが取り消されます。
- タスクの実行によって例外がスローされます。 この場合、返された将来に
getをコールすると、ExecutionExceptionがスローされ、その原因として例外が保持されます。
isDone()へのその後の呼び出しは、trueを返します。このタスクを実行するのに指定の期間(period)より長い時間がかかる場合、以降の実行は遅れて開始されることがありますが、並行して実行はされません。
- パラメータ:
command- 実行するタスクinitialDelay- 最初の遅延実行までの時間period- 連続する実行の間隔unit- initialDelayおよびperiodパラメータの時間単位- 戻り値:
- 一連の繰返しタスクの保留中の完了を表すScheduledFuture。 今後の
get()メソッドは、正常に戻されることはなく、タスクの取消しまたはタスク実行の異常終了時に例外をスローします。 - スロー:
RejectedExecutionException- タスクの実行をスケジュールできない場合NullPointerException- コマンドまたはユニットがヌルの場合IllegalArgumentException- periodが0以下である場合
-
scheduleWithFixedDelay
ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) 定期的なアクションを発行します。このアクションは、指定された初期遅延の後に最初に実行可能になり、その後、ある実行の終了から次の実行の開始までの間に指定された遅延が発生します。タスク実行のシーケンスは、次の例外的な完了が発生するまで無期限に続きます:
- タスクは、戻された将来を介して「明示的に取消された」です。
- エグゼキュータが終了し、タスクが取り消されます。
- タスクの実行によって例外がスローされます。 この場合、返された将来に
getをコールすると、ExecutionExceptionがスローされ、その原因として例外が保持されます。
isDone()へのその後の呼び出しは、trueを返します。- パラメータ:
command- 実行するタスクinitialDelay- 最初の遅延実行までの時間delay- 実行の終了後から次の開始までの遅延unit- initialDelayおよびdelayパラメータの時間単位- 戻り値:
- 一連の繰返しタスクの保留中の完了を表すScheduledFuture。 今後の
get()メソッドは、正常に戻されることはなく、タスクの取消しまたはタスク実行の異常終了時に例外をスローします。 - スロー:
RejectedExecutionException- タスクの実行をスケジュールできない場合NullPointerException- コマンドまたはユニットがヌルの場合IllegalArgumentException- delayが0以下である場合
-