インターフェース ManagedTaskListener


  • public interface ManagedTaskListener
    ManagedTaskListener は、タスクの Future の状態を監視するために使用されます。submit メソッドを使用して ManagedExecutorService に登録でき、FutureSE の状態が変化したときに呼び出されます。各リスナーメソッドは、指定されていないコンテキストで実行されます。すべてのリスナーは、明示的なトランザクションなしで実行されます(アプリケーションコンポーネントのトランザクションには参加しません)。トランザクションが必要な場合は、jakarta.transaction.UserTransaction インスタンスを使用してください。

    各リスナーインスタンスは、リスナーが登録されたのと同じプロセス内で呼び出されます。単一のリスナーが複数の ManagedExecutorService インスタンスに送信される場合、リスナーオブジェクトは複数のスレッドによって同時に呼び出される可能性があります。

    各リスナーメソッドは、最大で 1 回の最小サービス品質をサポートします。プロセスの失敗または終了が原因でリスナーが呼び出される保証はありません。

    状態遷移図

    次の状態遷移図と表は、ManagedTaskListener がタスクに関連付けられているときに発生する可能性のあるタスクライフサイクルイベントを示しています。各メソッドは、FutureSE の状態がある状態から別の状態に移行するときに呼び出されます。

    Task Listener State Diagram

    A. タスクは正常に実行されます。

    タスクリスナーの状態 通常
    シーケンス 状態 アクション リスナー 次の状態
    1. なし submit()taskSubmitted サブミット済み
    2. サブミット済み run() を呼び出そう taskStarting 起動済み
    3. 起動済み run() を終了します taskDone 終了

    B. タスクは taskSubmitted() 中にキャンセルされます:

    taskSubmitted 中にタスクリスナーの状態がキャンセルされました
    シーケンス 状態 アクション リスナー 次の状態
    1. なし submit() 変換:
    将来はキャンセルされます。
    キャンセル
    2. キャンセル taskAborted キャンセル済み
    3. キャンセル済み taskDone 終了

    C. タスクは、送信後、開始前にキャンセルまたは中止されます。

    タスクリスナーの状態は、送信後、開始前にキャンセルされました
    シーケンス 状態 アクション リスナー 次の状態
    1. なし submit()taskSubmitted サブミット済み
    2. サブミット済み cancel() または中止 taskAborted キャンセル済み
    3. キャンセル済み taskDone 終了

    D. タスクは開始時にキャンセルされます。

    タスクリスナーの状態 開始時にキャンセルされました
    シーケンス 状態 アクション リスナー 次の状態
    1. なし submit()taskSubmitted サブミット済み
    2. サブミット済み run() を呼び出そう 変換:
    将来はキャンセルされます。
    キャンセル
    3. キャンセル taskAborted キャンセル済み
    4. キャンセル済み taskDone 終了

    導入:
    1.0
    • メソッドの詳細

      • taskSubmitted

        void taskSubmitted​(FutureSE<?> future,
                           ManagedExecutorService executor,
                           ObjectSE task)
        タスクが Executor に送信された後に呼び出されます。タスクは、taskSubmitted リスナーが完了するまで開始状態になりません。このメソッドは、タスクが送信されたのと同じスレッドから呼び出すことができます。

        このイベントは、タスクの実行がスケジュールされていることを示すものではありません。

        パラメーター:
        future - タスクが送信されたときに作成された Future インスタンス。
        executor - 関連する Future を実行するために使用されるエグゼキュータ。
        task - 送信されたタスク。
      • taskAborted

        void taskAborted​(FutureSE<?> future,
                         ManagedExecutorService executor,
                         ObjectSE task,
                         ThrowableSE exception)
        タスクの存続期間中にいつでもタスクの Future がキャンセルされたときに呼び出されます。このメソッドは、taskDone() の後に呼び出すことができます。タスクが Future.cancel(boolean)SE 以外の方法で中止された場合、Future.isCancelled() メソッドは false を返します。例外引数は、キャンセルの原因を表します。AbortedException.getCause() メソッドは、タスクの開始に失敗した原因となった例外を返します。
        パラメーター:
        future - タスクが送信されたときに作成された FutureSE インスタンス。
        executor - 関連する Future を実行するために使用されるエグゼキュータ。
        task - 送信されたタスク。
        exception - タスクアボートの原因。
      • taskDone

        void taskDone​(FutureSE<?> future,
                      ManagedExecutorService executor,
                      ObjectSE task,
                      ThrowableSE exception)
        送信されたタスクが正常に実行されたか、タスクからスローされた例外が原因で失敗した場合、タスクがキャンセル、拒否、中止された場合に呼び出されます。
        パラメーター:
        future - タスクが送信されたときに作成された FutureSE インスタンス。
        executor - 関連する Future を実行するために使用されるエグゼキュータ。
        task - 送信されたタスク。
        exception - null でない場合、タスクが失敗する原因となった例外。
      • taskStarting

        void taskStarting​(FutureSE<?> future,
                          ManagedExecutorService executor,
                          ObjectSE task)
        このメソッドは、タスクが開始される前に呼び出されます。タスクは、taskSubmitted リスナーが完了するまで開始状態になりません。このメソッドは、タスクが送信された同じスレッドから呼び出すことができます。
        パラメーター:
        future - タスクが送信されたときに作成された FutureSE インスタンス。
        executor - 関連する Future を実行するために使用されるエグゼキュータ。
        task - 送信されたタスク。