インターフェース ManagedScheduledExecutorService

  • すべてのスーパーインターフェース:
    ExecutorSEExecutorServiceSEManagedExecutorServiceScheduledExecutorServiceSE

    public interface ManagedScheduledExecutorService
    extends ManagedExecutorService, ScheduledExecutorServiceSE
    ScheduledExecutorServiceSE の管理可能なバージョン。

    ManagedScheduledExecutorService は Java™ を継承します。SE ScheduledExecutorService は、Jakarta™ EE 環境で実行するために遅延タスクまたは定期タスクを送信するためのメソッドを提供します。ManagedScheduledExecutorService の実装は、Jakarta EE Product Provider によって提供されます。アプリケーションコンポーネントプロバイダーは、Java Naming and Directory Interface™ を使用します。(JNDI)リソース環境参照を使用して 1 つ以上の ManagedScheduledExecutorService オブジェクトのインスタンスを検索します。ManagedScheduledExecutorService インスタンスは、Resource アノテーションを使用してアプリケーションコンポーネントに挿入することもできます。

    Jakarta Concurrency 仕様には、ManagedScheduledExecutorService が実装できるいくつかの動作が記述されています。アプリケーションコンポーネントプロバイダーとデプロイヤーは、これらの要件を特定し、リソース環境参照を適切にマッピングします。

    タスクは、Jakarta™ EE Product Provider によって提供される管理対象スレッドで実行され、タスクを送信したアプリケーションコンポーネントコンテキスト内で実行されます。すべてのタスクは、明示的なトランザクションなしで実行されます(アプリケーションコンポーネントのトランザクションには参加しません)。トランザクションが必要な場合は、jakarta.transaction.UserTransaction インスタンスを使用してください。UserTransaction インスタンスは、" java:comp/UserTransaction" という名前を使用して JNDI で使用できます。または、Resource アノテーションを使用して jakarta.transaction.UserTransaction オブジェクトのインジェクションをリクエストします。

    例:

    
     public run() {
       // Begin of task
       InitialContext ctx = new InitialContext();
       UserTransaction ut = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
       ut.begin();
    
       // Perform transactional business logic
    
       ut.commit();
     }
     
    タスクはオプションで、ManagedTask インターフェースを使用して、ライフサイクルイベントの通知を受け取る ManagedTaskListener を提供できます。

    非同期タスクは通常、submit または schedule メソッドのいずれかを使用して ManagedScheduledExecutorService に送信され、それぞれが Future インスタンスを返します。Future はタスクの結果を表し、タスクが完了したかどうかを確認したり、タスクの完了を待つためにも使用できます。

    タスクがキャンセルされた場合、タスクの結果は CancellationException 例外になります。キャンセル以外の理由で開始のためにタスクを実行できない場合、結果は AbortedException 例外になります。タスクが Trigger でスケジュールされていて、トリガーがタスクを強制的にスキップした場合、結果は SkippedException 例外になります。

    タスクは、Trigger を引数として取る schedule メソッドと、scheduleAtFixedRate および scheduleWithFixedDelay メソッドを使用して定期的に実行するようにスケジュールできます。Future の結果は、現在スケジュールされている、または実行中のタスクのインスタンスによって表されます。タスクの将来および過去の実行は、Future によって表されません。Future の状態は変化し、複数の結果が予想されます。

    例: タスクが繰り返されている場合、タスクのライフサイクルは次のようになります。
    (メモ: タスクのライフサイクル管理の詳細については、ManagedTaskListener を参照してください。)

    タスクのライフサイクル
    シーケンス 状態 アクション リスナー 次の状態
    1A. なし submit()taskSubmitted サブミット済み
    2A. サブミット済み run() を呼び出そう taskStarting 起動済み
    3A. 起動済み run() を終了します taskDone スケジュールを変更する
    1B. スケジュールを変更する taskSubmitted サブミット済み
    2B. サブミット済み run() を呼び出そう taskStarting 起動済み
    3B. 起動済み run() を終了します taskDone スケジュールを変更する
    導入:
    1.0
    • メソッドの詳細

      • schedule

        ScheduledFutureSE<?> schedule​(RunnableSE command,
                                    Trigger trigger)
        トリガーに基づいてタスクを作成して実行します。トリガーは、タスクを実行するタイミングと頻度を決定します。
        パラメーター:
        command - 実行するタスク。
        trigger - タスクをいつ起動するかを決定するトリガー。
        戻り値:
        タスクの保留中の完了を表す Future。その get() メソッドは完了時に null を返します。
        例外:
        RejectedExecutionExceptionSE - タスクの実行をスケジュールできない場合。
        NullPointerExceptionSE - コマンドが null の場合。
      • schedule

        <V> ScheduledFutureSE<V> schedule​(CallableSE<V> callable,
                                        Trigger trigger)
        トリガーに基づいてタスクを作成して実行します。トリガーは、タスクを実行するタイミングと頻度を決定します。
        型パラメーター:
        V - Callable の戻り値の型
        パラメーター:
        callable - 実行する関数。
        trigger - タスクをいつ起動するかを決定するトリガー。
        戻り値:
        結果の抽出またはキャンセルに使用できる ScheduledFuture
        例外:
        RejectedExecutionExceptionSE - タスクの実行をスケジュールできない場合。
        NullPointerExceptionSE - callable が null の場合。