public interface ManagedScheduledExecutorService extends 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 によって提供されるマネージスレッドで実行され、タスクを送信したアプリケーションコンポーネントコンテキスト内で実行されます。すべてのタスクは、明示的なトランザクションなしで実行されます(アプリケーションコンポーネントのトランザクションに参加しません)。トランザクションが必要な場合は、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, scheduleWithFixedDelaySE
awaitTerminationSE, invokeAllSE, invokeAllSE, invokeAnySE, invokeAnySE, isShutdownSE, isTerminatedSE, shutdownSE, shutdownNowSE, submitSE, submitSE, submitSE
executeSE
ScheduledFutureSE<?> 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.