インターフェース ManagedTaskListener
public interface ManagedTaskListener
ManagedTaskListener は、タスクの Future の状態を監視するために使用されます。submit
メソッドを使用してManagedExecutorService
に登録でき、Future
SE の状態が変化したときに呼び出されます。各リスナーメソッドは、指定されていないコンテキストで実行されます。すべてのリスナーは、明示的なトランザクションなしで実行されます(アプリケーションコンポーネントのトランザクションには参加しません)。トランザクションが必要な場合は、jakarta.transaction.UserTransaction
インスタンスを使用してください。各リスナーインスタンスは、リスナーが登録されたのと同じプロセス内で呼び出されます。単一のリスナーが複数の ManagedExecutorService インスタンスに送信される場合、リスナーオブジェクトは複数のスレッドによって同時に呼び出される可能性があります。
各リスナーメソッドは、最大で 1 回の最小サービス品質をサポートします。プロセスの失敗または終了が原因でリスナーが呼び出される保証はありません。
状態遷移図
次の状態遷移図と表は、ManagedTaskListener がタスクに関連付けられているときに発生する可能性のあるタスクライフサイクルイベントを示しています。各メソッドは、
Future
SE の状態がある状態から別の状態に移行するときに呼び出されます。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
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 void
taskAborted(FutureSE<?> future, ManagedExecutorService executor, ObjectSE task, ThrowableSE exception)
タスクの存続期間中にいつでもタスクの Future がキャンセルされたときに呼び出されます。void
taskDone(FutureSE<?> future, ManagedExecutorService executor, ObjectSE task, ThrowableSE exception)
送信されたタスクが正常に実行されたか、タスクからスローされた例外が原因で失敗した場合、タスクがキャンセル、拒否、中止された場合に呼び出されます。void
taskStarting(FutureSE<?> future, ManagedExecutorService executor, ObjectSE task)
このメソッドは、タスクが開始される前に呼び出されます。void
taskSubmitted(FutureSE<?> future, ManagedExecutorService executor, ObjectSE task)
タスクがエグゼキュータに送信された後に呼び出されます。
メソッドの詳細
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 を返します。例外引数は、キャンセルの原因を表します。- タスクがキャンセルされた場合は
CancellationException
SE - タスクがスキップされた場合は
SkippedException
または - 別の理由でタスクの開始に失敗した場合は
AbortedException
。
AbortedException.getCause()
メソッドは、タスクの開始に失敗した原因となった例外を返します。- パラメーター:
future
- タスクが送信されたときに作成されたFuture
SE インスタンス。executor
- 関連する Future を実行するために使用されるエグゼキュータ。task
- 送信されたタスク。exception
- タスクアボートの原因。
- タスクがキャンセルされた場合は
taskDone
void taskDone(FutureSE<?> future, ManagedExecutorService executor, ObjectSE task, ThrowableSE exception)
送信されたタスクが正常に実行されたか、タスクからスローされた例外が原因で失敗した場合、タスクがキャンセル、拒否、中止された場合に呼び出されます。- パラメーター:
future
- タスクが送信されたときに作成されたFuture
SE インスタンス。executor
- 関連する Future を実行するために使用されるエグゼキュータ。task
- 送信されたタスク。exception
- null でない場合、タスクが失敗する原因となった例外。
taskStarting
void taskStarting(FutureSE<?> future, ManagedExecutorService executor, ObjectSE task)
このメソッドは、タスクが開始される前に呼び出されます。タスクは、taskSubmitted リスナーが完了するまで開始状態になりません。このメソッドは、タスクが送信された同じスレッドから呼び出すことができます。- パラメーター:
future
- タスクが送信されたときに作成されたFuture
SE インスタンス。executor
- 関連する Future を実行するために使用されるエグゼキュータ。task
- 送信されたタスク。