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 によって提供されるマネージスレッドで実行され、タスクを送信したアプリケーションコンポーネントコンテキスト内で実行されます。すべてのタスクは、明示的なトランザクションなしで実行されます(アプリケーションコンポーネントのトランザクションに参加しません)。トランザクションが必要な場合は、javax.transaction.UserTransaction インスタンスを使用してください。UserTransaction インスタンスは、名前 " java:comp/UserTransaction" を使用するか、Resource アノテーションを使用して UserTransaction オブジェクトの注入をリクエストすることにより、JNDI で使用できます。
例:
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 | スケジュールを変更する |
| 修飾子と型 | メソッドと説明 |
|---|---|
<V> ScheduledFutureSE<V> | schedule(CallableSE<V> callable, Trigger trigger) トリガーに基づいてタスクを作成して実行します。 |
ScheduledFutureSE<?> | schedule(RunnableSE command, Trigger trigger) トリガーに基づいてタスクを作成して実行します。 |
scheduleSE, scheduleSE, scheduleAtFixedRateSE, scheduleWithFixedDelaySEawaitTerminationSE, invokeAllSE, invokeAllSE, invokeAnySE, invokeAnySE, isShutdownSE, isTerminatedSE, shutdownSE, shutdownNowSE, submitSE, submitSE, submitSEexecuteSEScheduledFutureSE<?> schedule(RunnableSE command, Trigger trigger)
command - 実行するタスク。trigger - タスクをいつ起動するかを決定するトリガー。get() メソッドは完了時に null を返します。RejectedExecutionExceptionSE - タスクの実行をスケジュールできない場合。NullPointerExceptionSE - コマンドが null の場合。<V> ScheduledFutureSE<V> schedule(CallableSE<V> callable, Trigger trigger)
callable - 実行する関数。trigger - タスクをいつ起動するかを決定するトリガー。RejectedExecutionExceptionSE - タスクの実行をスケジュールできない場合。NullPointerExceptionSE - callable が null の場合。Copyright © 2019 Eclipse Foundation.
Use is subject to license terms.