モジュール java.base
パッケージ java.util.concurrent

インタフェースScheduledExecutorService

すべてのスーパー・インタフェース:
AutoCloseable, 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