インタフェースScheduledExecutorService
- すべてのスーパー・インタフェース:
AutoCloseable,Executor,ExecutorService
- 既知のすべての実装クラス:
ScheduledThreadPoolExecutor
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
-
メソッドのサマリー
修飾子と型メソッド説明指定された遅延後に有効になるワン・ショット・タスクを送信します。<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) 指定された初期遅延の後に最初に有効になる定期的なアクションを送信し、その後、1つの実行の終了と次の実行の開始の間の所定の遅延で送信します。インタフェースjava.util.concurrent.ExecutorServiceで宣言されたメソッド
awaitTermination, close, 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以下である場合
-