-
- すべてのスーパー・インタフェース:
Executor
,ExecutorService
- 既知のすべての実装クラス:
ScheduledThreadPoolExecutor
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実装のための便利なファクトリ・メソッドを提供します。使用例
次のクラスには、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
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 ScheduledFuture<?>
schedule(Runnable command, long delay, TimeUnit unit)
指定された遅延後に有効になるワン・ショット・タスクを送信します。<V> ScheduledFuture<V>
schedule(Callable<V> callable, 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)
指定された初期遅延の後に最初に有効になる定期的なアクションを送信し、その後、1つの実行の終了と次の実行の開始の間の所定の遅延で送信します。-
インタフェース java.util.concurrent.ExecutorServiceで宣言されたメソッド
awaitTermination, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated, shutdown, shutdownNow, submit, submit, submit
-
-
-
-
メソッドの詳細
-
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)
指定された初期遅延の後に最初に有効になる定期的なアクションを送信し、その後、1つの実行の終了と次の実行の開始の間の所定の遅延で送信します。タスク実行のシーケンスは、次の例外的な完了が発生するまで無期限に続きます:
- タスクは返された未来を介して「明示的に取消された」です。
- エグゼキュータが終了し、タスクの取消も発生します。
- タスクの実行によって例外がスローされます。 この場合、返された未来の
get
を呼び出すと例外がその原因としてExecutionException
がスローされます。
isDone()
へのその後の呼び出しは、true
を返します。- パラメータ:
command
- 実行するタスクinitialDelay
- 最初の遅延実行までの時間delay
- 実行の終了後から次の開始までの遅延unit
- initialDelayおよびdelayパラメータの時間単位- 戻り値:
- 一連の繰り返しタスクの保留中の完了を表すScheduledFuture。 将来の
get()
メソッドは決して正常に戻らず、タスクの取消やタスクの実行の異常終了時に例外をスローします。 - 例外:
RejectedExecutionException
- タスクの実行をスケジュールできない場合NullPointerException
- コマンドまたはユニットがヌルの場合IllegalArgumentException
- delayが0以下である場合
-
-