インターフェース ManagedExecutorService
- すべてのスーパーインターフェース:
ExecutorSE,ExecutorServiceSE
- すべての既知のサブインターフェース:
ManagedScheduledExecutorService
public interface ManagedExecutorService extends ExecutorServiceSE
ExecutorServiceSE の管理可能なバージョン。ManagedExecutorService は Java™ を継承します。SE ExecutorService は、Jakarta™ EE 環境で実行するタスクを送信するメソッドを提供します。ManagedExecutorService の実装は、Jakarta EE Product Provider によって提供されます。アプリケーションコンポーネントプロバイダーは、Java ネーミングおよびディレクトリインターフェースを使用します。™ (JNDI)リソース環境参照を使用して、1 つ以上の ManagedExecutorService オブジェクトのインスタンスを検索します。ManagedExecutorService インスタンスは、
Resourceアノテーションを使用してアプリケーションコンポーネントに挿入することもできます。Jakarta Concurrency 仕様には、ManagedExecutorService が実装できるいくつかの動作が記述されています。アプリケーションコンポーネントプロバイダーとデプロイヤーは、これらの要件を特定し、リソース環境参照を適切にマッピングします。
ManagedExecutorService の最も一般的な用途は、Jakarta Enterprise Beans での非同期メソッドの処理や、非同期処理をサポートするサーブレットの非同期タスクの処理など、短時間の非同期タスクを実行することです。
タスクは、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を提供できます。例:
public class MyRunnable implements Runnable, ManagedTask { ... public void run() { ... } public ManagedTaskListener getManagedTaskListener() { return myManagedTaskListener; } ... } MyRunnable task = ...; ManagedExecutorService executor = ...; executor.submit(task); // lifecycle events will be notified to myManagedTaskListener非同期タスクは通常、submitメソッドの 1 つを使用して ManagedExecutorService に送信され、それぞれのメソッドがFutureSE インスタンスを返します。Futureはタスクの結果を表し、タスクが完了したかどうかを確認したり、タスクの完了を待機したりするためにも使用できます。タスクが取り消されると、タスクの結果は
CancellationExceptionSE 例外になります。キャンセル以外の理由でタスクを実行できない場合、結果はAbortedException例外になります。例:
/** * Retrieve all accounts from several account databases in parallel. * Resource Mappings: * type: jakarta.enterprise.concurrent.ManagedExecutorService * jndi-name: concurrent/ThreadPool */ public List<Account> getAccounts(long accountId) { try { javax.naming.InitialContext ctx = new InitialContext(); ManagedExecutorService mes = (ManagedExecutorService) ctx.lookup("java:comp/env/concurrent/ThreadPool"); // Create a set of tasks to perform the account retrieval. ArrayList<Callable<Account>> retrieverTasks = new ArrayList<Callable<Account>>(); retrieverTasks.add(new EISAccountRetriever()); retrieverTasks.add(new RDBAccountRetriever()); // Submit the tasks to the thread pool and wait for them // to complete (successfully or otherwise). List<Future<Account>> taskResults= mes.invokeAll(retrieverTasks); // Retrieve the results from the resulting Future list. ArrayList<Account> results = new ArrayList<Account>(); for(Future<Account> taskResult : taskResults) { try { results.add(taskResult.get()); } catch (ExecutionException e) { Throwable cause = e.getCause(); // Handle the AccountRetrieverError. } } return results; } catch (NamingException e) { // Throw exception for fatal error. } catch (InterruptedException e) { // Throw exception for shutdown or other interrupt condition. } } public class EISAccountRetriever implements Callable<Account> { public Account call() { // Connect to our eis system and retrieve the info for the account. //... return null; } } public class RDBAccountRetriever implements Callable<Account> { public Account call() { // Connect to our database and retrieve the info for the account. //... } } public class Account { // Some account data... }ManagedExecutorService は、
CompletableFutureSE およびそのコンストラクター /newIncompleteFutureメソッドの静的メソッドに対応するさまざまなメソッドを提供し、デフォルトの非同期実行機能としてManagedExecutorServiceによってサポートされる完了ステージを作成できるようにします。それらから作成されます。これにより、各依存アクションが最終的にどのスレッドで実行されるかに関係なく、一貫した予測可能なスレッドコンテキストで実行される完了ステージアクションのパイプラインを作成できます。例:
ManagedExectorService executor = InitialContext.doLookup("java:comp/DefaultManagedExecutorService"); ... CompletableFuture<Integer> future = executor .supplyAsync(supplier) .thenApply(function1) .thenApplyAsync(function2) ...ManagedExecutorServiceによってサポートされる完了ステージへのコンテキスト伝搬は、次のように定義されている一貫性のある予測可能な方法で行う必要があります。- 指定されたアクションがすでにコンテキストに依存している場合 (たとえば、
contextService.createContextualProxy(action, Runnable.class))、アクションはすでにキャプチャーされたコンテキストで実行されます。 - それ以外の場合、新規ステージおよびその親ステージのデフォルトの非同期実行機能である
ManagedExecutorServiceの構成に従って、各型のスレッドコンテキストが完了ステージを作成するスレッドから伝搬されるか、コンテキストがクリアされるようにマークされます。ManagedExecutorServiceがexecutor引数として*Asyncメソッドに提供される場合、提供されたManagedExecutorServiceはアクションを実行するために使用されますが、スレッドコンテキストの伝播とクリアを決定するためには使用されません。
各型のスレッドコンテキストは、アクションを実行するスレッドに適用されます (クリアされるか、以前にキャプチャーされたものとして)。適用されたスレッドコンテキストは、アクションが正常に完了したか例外的に完了したかを問わず、削除され、スレッドの以前のコンテキストが復元されます。
依存ステージが完了ステージから作成された場合、およびそれらから作成された依存ステージなどから同様に、スレッドコンテキストが同じ方法でキャプチャーまたはクリアされます。これにより、各ステージで実行されるアクションは、ユーザーが事前にコンテキスト化されたアクションを指定して明示的にオーバーライドしない限り、完了ステージを作成するコードのスレッドコンテキストで常に実行されることが保証されます。
ManagedTaskを実装するアクションが指定されている場合、ManagedExecutorServiceによってサポートされる完了ステージはIllegalArgumentExceptionSE を発生させる必要があります。- 導入:
- 1.0
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 <U> CompletableFutureSE<U>completedFuture(U value)指定された値ですでに完了している新しいCompletableFutureSE を返します。<U> CompletionStageSE<U>completedStage(U value)指定された値ですでに完了している新しいCompletionStageSE を返します。<T> CompletableFutureSE<T>copy(CompletableFutureSE<T> stage)指定されたステージの完了によって完了する新しいCompletableFutureSE を返します。<T> CompletionStageSE<T>copy(CompletionStageSE<T> stage)指定されたステージの完了によって完了する新しいCompletionStageSE を返します。<U> CompletableFutureSE<U>failedFuture(ThrowableSE ex)指定されたThrowableですでに例外的に完了している新しいCompletableFutureSE を返します。<U> CompletionStageSE<U>failedStage(ThrowableSE ex)指定されたThrowableですでに例外的に完了している新しいCompletionStageSE を返します。ContextServicegetContextService()このManagedExecutorServiceと同じ伝播設定を持つContextServiceを返し、このManagedExecutorServiceを、withContextCaptureメソッドを介して作成するCompletionStageSE およびCompletableFutureSE インスタンスのデフォルトの非同期実行機能として使用します。<U> CompletableFutureSE<U>newIncompleteFuture()新しい不完全なCompletableFutureSE を返します。CompletableFutureSE<VoidSE>runAsync(RunnableSE runnable)指定されたアクションを実行した後、このエグゼキュータで実行されているタスクによって完了する新しいCompletableFutureSE を返します。<U> CompletableFutureSE<U>supplyAsync(SupplierSE<U> supplier)指定されたアクションを実行した後、このエグゼキュータで実行されているタスクによって完了する新しいCompletableFutureSE を返します。インターフェース java.util.concurrent.ExecutorSE から継承されたメソッド
executeSE
インターフェース java.util.concurrent.ExecutorServiceSE から継承されたメソッド
awaitTerminationSE, invokeAllSE, invokeAllSE, invokeAnySE, invokeAnySE, isShutdown, isTerminated, shutdown, shutdownNow, submitSE, submitSE, submitSE
メソッドの詳細
completedFuture
<U> CompletableFutureSE<U> completedFuture(U value)
指定された値ですでに完了している新しい
CompletableFutureSE を返します。このエグゼキューターは、このメソッドによって返される新しい完了ステージ、それから作成されたすべての依存ステージ、それらから作成されたすべての依存ステージなどのデフォルトの非同期実行機能です。
- 型パラメーター:
U- 完了可能な未来の結果型。- パラメーター:
value- 完成可能な未来が完成する結果。- 戻り値:
- 新しい完全な未来。
- 導入:
- 3.0
completedStage
<U> CompletionStageSE<U> completedStage(U value)
指定された値ですでに完了している新しい
CompletionStageSE を返します。このエグゼキューターは、このメソッドによって返される新しい完了ステージ、それから作成されたすべての依存ステージ、それらから作成されたすべての依存ステージなどのデフォルトの非同期実行機能です。
- 型パラメーター:
U- 完了段階の結果型。- パラメーター:
value- 完了段階が完了する結果。- 戻り値:
- 新しい完成段階。
- 導入:
- 3.0
copy
<T> CompletableFutureSE<T> copy(CompletableFutureSE<T> stage)
指定されたステージの完了によって完了する新しい
CompletableFutureSE を返します。新しい完了可能な未来は、コピーが呼び出される
ManagedExecutorServiceによってサポートされます。これは、新しいステージとそこから作成されるすべての依存ステージのデフォルトの非同期実行機能として機能します。依存ステージが新しい完了可能な未来から作成されると、スレッドコンテキストが
ManagedExecutorServiceによってキャプチャーおよび / またはクリアされます。これにより、ユーザーが事前にコンテキスト化されたアクションを指定して明示的にオーバーライドしない限り、各ステージで実行されるアクションは常に、ステージを作成するコードのスレッドコンテキストで実行されることが保証されます。このメソッドの呼び出しは、提供された完了可能なフューチャまたはそこから直接作成された他の依存ステージのスレッドコンテキストの伝播には影響しません。
- 型パラメーター:
T- 完了可能な将来の結果型。- パラメーター:
stage- その完了が、このメソッドによって作成された新しい完了可能なフューチャーの完了をトリガーする、完了可能なフューチャー。- 戻り値:
- 新しい完全な未来。
- 導入:
- 3.0
copy
<T> CompletionStageSE<T> copy(CompletionStageSE<T> stage)
指定されたステージの完了によって完了する新しい
CompletionStageSE を返します。新しい完了ステージは、コピーが呼び出される
ManagedExecutorServiceによってサポートされます。ManagedExecutorServiceは、新しいステージとそこから作成されるすべての依存ステージのデフォルトの非同期実行機能として機能します。依存ステージが新しい完了ステージから作成されると、スレッドコンテキストが
ManagedExecutorServiceによってキャプチャーおよび / またはクリアされます。これにより、ユーザーが事前にコンテキスト化されたアクションを指定して明示的にオーバーライドしない限り、各ステージで実行されるアクションは常に、ステージを作成するコードのスレッドコンテキストで実行されることが保証されます。このメソッドの呼び出しは、提供されたステージまたはそこから直接作成された他の依存ステージのスレッドコンテキストの伝播には影響しません。
- 型パラメーター:
T- 完了段階の結果型。- パラメーター:
stage- このメソッドによって作成された新しいステージの完了をトリガーする完了ステージ。- 戻り値:
- 新しい完成段階。
- 導入:
- 3.0
failedFuture
<U> CompletableFutureSE<U> failedFuture(ThrowableSE ex)
指定された
Throwableですでに例外的に完了している新しいCompletableFutureSE を返します。このエグゼキューターは、このメソッドによって返される新しい完了ステージ、それから作成されたすべての依存ステージ、それらから作成されたすべての依存ステージなどのデフォルトの非同期実行機能です。
- 型パラメーター:
U- 完了可能な未来の結果型。- パラメーター:
ex- 完了可能な未来が完了する例外またはエラー。- 戻り値:
- 新しい完全な未来。
- 導入:
- 3.0
failedStage
<U> CompletionStageSE<U> failedStage(ThrowableSE ex)
指定された
Throwableですでに例外的に完了している新しいCompletionStageSE を返します。このエグゼキューターは、このメソッドによって返される新しい完了ステージ、それから作成されたすべての依存ステージ、それらから作成されたすべての依存ステージなどのデフォルトの非同期実行機能です。
- 型パラメーター:
U- 完了段階の結果型。- パラメーター:
ex- 完了段階が完了する例外またはエラー。- 戻り値:
- 新しい完成段階。
- 導入:
- 3.0
getContextService
ContextService getContextService()
このManagedExecutorServiceと同じ伝播設定を持つContextServiceを返し、このManagedExecutorServiceを、withContextCaptureメソッドを介して作成するCompletionStageSE およびCompletableFutureSE インスタンスのデフォルトの非同期実行機能として使用します。- 戻り値:
- この
ManagedExecutorServiceと同じ伝搬設定を持つContextService。 - 導入:
- 3.0
newIncompleteFuture
<U> CompletableFutureSE<U> newIncompleteFuture()
新しい不完全な
CompletableFutureSE を返します。このエグゼキューターは、このメソッドによって返される新しい完了ステージ、それから作成されたすべての依存ステージ、それらから作成されたすべての依存ステージなどのデフォルトの非同期実行機能です。
- 型パラメーター:
U- 完了可能な未来の結果型。- 戻り値:
- 新しい完全な未来。
- 導入:
- 3.0
runAsync
CompletableFutureSE<VoidSE> runAsync(RunnableSE runnable)
指定されたアクションを実行した後、このエグゼキュータで実行されているタスクによって完了する新しい
CompletableFutureSE を返します。このエグゼキューターは、このメソッドによって返される新しい完了ステージ、それから作成されたすべての依存ステージ、それらから作成されたすべての依存ステージなどのデフォルトの非同期実行機能です。
- パラメーター:
runnable- 返された完了ステージを完了する前に実行するアクション。- 戻り値:
- 新しい完全な未来。
- 導入:
- 3.0
supplyAsync
<U> CompletableFutureSE<U> supplyAsync(SupplierSE<U> supplier)
指定されたアクションを実行した後、このエグゼキュータで実行されているタスクによって完了する新しい
CompletableFutureSE を返します。このエグゼキューターは、このメソッドによって返される新しい完了ステージ、それから作成されたすべての依存ステージ、それらから作成されたすべての依存ステージなどのデフォルトの非同期実行機能です。
- 型パラメーター:
U- サプライヤーの結果型と返された完了可能なステージ。- パラメーター:
supplier- 返された完了ステージを完了するために使用される値を返すアクション。- 戻り値:
- 新しい完全な未来。
- 導入:
- 3.0