Callable タスクおよび Runnable タスク
Concurrency Utilities for Java EE では、サブミットしているスレッドの Java™ Platform, Enterprise Edition (Java EE) コンテキストと並行してコードを実行するために、Callable タスクまたは Runnable タスクがアプリケーション・コンポーネントによって使用されます。
タスクは、java.util.concurrent.Callable インターフェースまたは java.lang.Runnable インターフェースを実装します。
並行して作業を実行したいコンポーネントは、Java Naming and Directory Interface (JNDI) で管理対象 executor を見つけ、次に Callable タスクまたは Runnable タスクをパラメーターとして使用して submit、schedule、invoke、または execute の各メソッドを呼び出します。
submit メソッドおよび schedule メソッドは、Future または ScheduledFuture を返します。Future は、コンポーネントと現在実行中のタスクをリンクするハンドルです。Future が使用されるのは、通常、コンポーネントがタスクの結果または状況を取得する必要がある場合か、 または、実行しているタスクのうちの 1 つ以上の完了を待機する必要がある場合です。invokeAll メソッドでは、コンポーネントが待機するタスクのリストが指定されます。タイムアウトを指定すると、 コンポーネントが無期限に待機することを防ぐことができます。
タスクを管理対象 executor にサブミットすることによって、アプリケーションは、アプリケーション・サーバーによって管理されていて Java EE 環境と関連しているスレッドを使用できます。また、 これらのスレッドは、Java EE コンテキスト (例えば、java:comp) を持ち、起動時に認証されます。