public interface ManagedTaskListener
submit
メソッドを使用して ManagedExecutorService
に登録でき、Future
SE の状態が変化したときに呼び出されます。各リスナーメソッドは、指定されていないコンテキストで実行されます。すべてのリスナーは、明示的なトランザクションなしで実行されます(アプリケーションコンポーネントのトランザクションには参加しません)。トランザクションが必要な場合は、UserTransaction
インスタンスを使用してください。各リスナーインスタンスは、リスナーが登録されたのと同じプロセス内で呼び出されます。単一のリスナーが複数の ManagedExecutorService インスタンスに送信される場合、リスナーオブジェクトは複数のスレッドによって同時に呼び出される可能性があります。
各リスナーメソッドは、最大で 1 回の最小サービス品質をサポートします。プロセスの失敗または終了が原因でリスナーが呼び出される保証はありません。
状態遷移図
次の状態遷移図と表は、ManagedTaskListener がタスクに関連付けられているときに発生する可能性のあるタスクライフサイクルイベントを示しています。各メソッドは、Future
SE の状態がある状態から別の状態に移行するときに呼び出されます。
A. タスクは正常に実行されます。
シーケンス | 状態 | アクション | リスナー | 次の状態 |
1. | なし | submit() | taskSubmitted | サブミット済み |
2. | サブミット済み | run() を呼び出そう | taskStarting | 始動済み |
3. | 始動済み | run() を終了する | taskDone | 終了 |
B. タスクは taskSubmitted() 中にキャンセルされます:
シーケンス | 状態 | アクション | リスナー | 次の状態 |
1. | なし | submit() | taskSubmitted 将来はキャンセルされます。 | キャンセル |
2. | キャンセル | taskAborted | キャンセル済み | |
3. | キャンセル済み | taskDone | 終了 |
C. タスクは、送信後、開始前にキャンセルまたは中止されます。
シーケンス | 状態 | アクション | リスナー | 次の状態 |
1. | なし | submit() | taskSubmitted | サブミット済み |
2. | サブミット済み | cancel() または中止 | taskAborted | キャンセル済み |
3. | キャンセル済み | taskDone | 終了 |
D. タスクは開始時にキャンセルされます。
シーケンス | 状態 | アクション | リスナー | 次の状態 |
1. | なし | submit() | taskSubmitted | サブミット済み |
2. | サブミット済み | run() を呼び出そう | taskStarting 将来はキャンセルされます。 | キャンセル |
3. | キャンセル | taskAborted | キャンセル済み | |
4. | キャンセル済み | taskDone | 終了 |
修飾子と型 | メソッドと説明 |
---|---|
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) タスクがエグゼキュータに送信された後に呼び出されます。 |
void taskSubmitted(FutureSE<?> future, ManagedExecutorService executor, ObjectSE task)
このイベントは、タスクの実行がスケジュールされていることを示すものではありません。
future
- タスクが送信されたときに作成された Future
インスタンス。executor
- 関連する Future を実行するために使用されるエグゼキュータ。task
- 送信されたタスク。void taskAborted(FutureSE<?> future, ManagedExecutorService executor, ObjectSE task, ThrowableSE exception)
Future.cancel(boolean)
SE 以外の方法で中止された場合、Future.isCancelled()
SE メソッドは false を返します。例外引数は、キャンセルの原因を表します。CancellationException
SESkippedException
またはAbortedException
。AbortedException.getCause()
メソッドは、タスクの開始に失敗した原因となった例外を返します。future
- タスクが送信されたときに作成された Future
SE インスタンス。executor
- 関連する Future を実行するために使用されるエグゼキュータ。task
- 送信されたタスク。exception
- タスクアボートの原因。void taskDone(FutureSE<?> future, ManagedExecutorService executor, ObjectSE task, ThrowableSE exception)
future
- タスクが送信されたときに作成された Future
SE インスタンス。executor
- 関連する Future を実行するために使用されるエグゼキュータ。task
- 送信されたタスク。exception
- null でない場合、タスクが失敗する原因となった例外。void taskStarting(FutureSE<?> future, ManagedExecutorService executor, ObjectSE task)
future
- タスクが送信されたときに作成された Future
SE インスタンス。executor
- 関連する Future を実行するために使用されるエグゼキュータ。task
- 送信されたタスク。Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.