インターフェース ManagedScheduledExecutorService
- すべてのスーパーインターフェース:
ExecutorSE
、ExecutorServiceSE
、ManagedExecutorService
、ScheduledExecutorServiceSE
ScheduledExecutorService
SE の管理可能なバージョン。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
(RunnableSE command, Trigger trigger) トリガーに基づいてタスクを作成して実行します。<V> ScheduledFutureSE<V>
schedule
(CallableSE<V> callable, Trigger trigger) トリガーに基づいてタスクを作成して実行します。インターフェース java.util.concurrent.ExecutorSE から継承されたメソッド
executeSE
インターフェース java.util.concurrent.ExecutorServiceSE から継承されたメソッド
awaitTerminationSE, invokeAllSE, invokeAllSE, invokeAnySE, invokeAnySE, isShutdown, isTerminated, shutdown, shutdownNow, submitSE, submitSE, submitSE
インターフェース jakarta.enterprise.concurrent.ManagedExecutorService から継承されたメソッド
completedFuture, completedStage, copy, copy, failedFuture, failedStage, getContextService, newIncompleteFuture, runAsync, supplyAsync
インターフェース java.util.concurrent.ScheduledExecutorServiceSE から継承されたメソッド
scheduleSE, scheduleSE, scheduleAtFixedRateSE, scheduleWithFixedDelaySE
メソッドの詳細
schedule
トリガーに基づいてタスクを作成して実行します。トリガーは、タスクを実行するタイミングと頻度を決定します。- パラメーター:
command
- 実行するタスク。trigger
- タスクをいつ起動するかを決定するトリガー。- 戻り値:
- タスクの保留中の完了を表す Future。その
get()
メソッドは完了時にnull
を返します。 - 例外:
RejectedExecutionExceptionSE
- タスクの実行をスケジュールできない場合。NullPointerExceptionSE
- コマンドが null の場合。
schedule
トリガーに基づいてタスクを作成して実行します。トリガーは、タスクを実行するタイミングと頻度を決定します。- 型パラメーター:
V
-Callable
の戻り値の型- パラメーター:
callable
- 実行する関数。trigger
- タスクをいつ起動するかを決定するトリガー。- 戻り値:
- 結果の抽出またはキャンセルに使用できる ScheduledFuture
- 例外:
RejectedExecutionExceptionSE
- タスクの実行をスケジュールできない場合。NullPointerExceptionSE
- callable が null の場合。