インタフェースScheduledExecutorService

すべてのスーパー・インタフェース:
AutoCloseable, Executor, ExecutorService
既知のすべての実装クラス:
ForkJoinPool, ScheduledThreadPoolExecutor

public interface ScheduledExecutorService extends ExecutorService
指定された遅延時間後または定期的にコマンドを実行するようにスケジュールできる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
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    schedule(Runnable command, long delay, TimeUnit unit)
    指定された遅延後に実行可能になったワンショット・タスクを送信します。
    schedule(Callable<V> callable, long delay, TimeUnit unit)
    指定された遅延後に実行できるようになった、値を返すワンショット・タスクを送信します。
    scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
    定期的なアクションを発行します。このアクションは、指定された初期遅延の後、次に指定された期間で実行できるようになります。つまり、実行は、initialDelayinitialDelay + periodinitialDelay + 2 * periodなどの後に開始されます。
    scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
    定期的なアクションを発行します。このアクションは、指定された初期遅延の後に最初に実行可能になり、その後、ある実行の終了から次の実行の開始までの間に指定された遅延が発生します。

    インタフェースExecutorで宣言されたメソッド

    execute
    修飾子と型
    メソッド
    説明
    void
    execute(Runnable command)
    将来のどの時点かで、指定されたコマンドを実行します。

    インタフェースで宣言されたメソッド ExecutorService

    awaitTermination, close, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated, shutdown, shutdownNow, submit, submit, submit
    修飾子と型
    メソッド
    説明
    boolean
    awaitTermination(long timeout, TimeUnit unit)
    シャットダウン要求後にすべてのタスクが実行を完了していたか、タイム・アウトが発生するか、現在のスレッドで割込みが発生するか、そのいずれかが最初に発生するまでブロックします。
    default void
    順序正しくシャットダウンを開始します。以前に送信されたタスクが実行されますが、新規タスクは受け入れられません。
    <T> List<Future<T>>
    invokeAll(Collection<? extends Callable<T>> tasks)
    指定されたタスクを実行し、すべて完了すると、ステータスと結果を含むFutureのリストを返します。
    <T> List<Future<T>>
    invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
    指定されたタスクを実行し、すべてが完了するか時間切れになるか、そのいずれかが最初に発生した時点で、ステータスと結果を含むFutureのリストを返します。
    <T> T
    invokeAny(Collection<? extends Callable<T>> tasks)
    指定されたタスクを実行し、例外をスローせずに正常に完了したタスクが存在する場合は、その結果を返します。
    <T> T
    invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
    指定されたタスクを実行し、タイム・アウトが経過する前に例外をスローせずに正常に完了したタスクが存在する場合は、その結果を返します。
    boolean
    このexecutorがシャットダウンしていた場合、trueを返します。
    boolean
    シャットダウンに続いてすべてのタスクが完了していた場合、trueを返します。
    void
    順序正しくシャットダウンを開始します。以前に送信されたタスクが実行されますが、新規タスクは受け入れられません。
    実行中のアクティブなタスクすべての停止を試み、待機中のタスクの処理を停止し、実行を待機していたタスクのリストを返します。
    実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。
    <T> Future<T>
    submit(Runnable task, T result)
    実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。
    <T> Future<T>
    submit(Callable<T> task)
    値を返す実行用タスクを送信して、保留状態のタスク結果を表す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)
      定期的なアクションを発行します。このアクションは、指定された初期遅延の後、次に指定された期間で実行できるようになります。つまり、実行は、initialDelayinitialDelay + periodinitialDelay + 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以下である場合