| 
 | JavaTM 2 Platform Standard Ed. 5.0 | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
public interface ExecutorService
終了を管理するメソッド、および 1 つ以上の非同期タスクの進行状況を追跡する Future を生成可能なメソッドを提供する Executor。
 
ExecutorService は、新規タスクの受け入れを停止するシャットダウンが可能です。シャットダウンすると executor は最終的に終了しますが、その時点では、実行中のアクティブなタスクや実行を待機中のタスクは存在せず、新規タスクを送信することもできません。
 submit メソッドは、実行の取り消しや完了の待機に使用できる Future を作成して返すことにより、基底メソッド Executor.execute(java.lang.Runnable) を拡張します。invokeAny および invokeAll メソッドは、通常利便性のもっとも高い形式の一括実行を行い、タスクのコレクションを実行して、1 つ以上またはすべてが完了するのを待機します。ExecutorCompletionService クラスを、これらのメソッドのカスタマイズされたバリアントの書き込みに使用できます。
Executors クラスは、このパッケージで提供される executor サービス用のファクトリメソッドを提供します。
Executors.newFixedThreadPool(int) ファクトリメソッドを使用します。
 
 
 class NetworkService {
    private final ServerSocket serverSocket;
    private final ExecutorService pool;
    public NetworkService(int port, int poolSize) throws IOException {
      serverSocket = new ServerSocket(port);
      pool = Executors.newFixedThreadPool(poolSize);
    }
 
    public void serve() {
      try {
        for (;;) {
          pool.execute(new Handler(serverSocket.accept()));
        }
      } catch (IOException ex) {
        pool.shutdown();
      }
    }
  }
  class Handler implements Runnable {
    private final Socket socket;
    Handler(Socket socket) { this.socket = socket; }
    public void run() {
      // read and service request
    }
 }
 
| メソッドの概要 | ||
|---|---|---|
|  boolean | awaitTermination(long timeout,
                 TimeUnit unit)シャットダウン要求後にすべてのタスクが実行を完了する、タイムアウトが発生する、現在のスレッドで割り込みが発生する、のどれかが最初に起きるまでブロックします。 | |
| 
 | invokeAll(Collection<Callable<T>> tasks)指定されたタスクを実行し、Future のリストをステータスとともに返し、すべてが完了したら結果を返します。 | |
| 
 | invokeAll(Collection<Callable<T>> tasks,
          long timeout,
          TimeUnit unit)指定されたタスクを実行し、Future のリストをステータスとともに返し、すべてが完了するかまたは時間切れになるかのいずれか早い時点で結果を返します。 | |
| 
 | invokeAny(Collection<Callable<T>> tasks)指定されたタスクを実行し、正常に完了したタスクが存在する場合は、その結果を (例外をスローせずに) 返します。 | |
| 
 | invokeAny(Collection<Callable<T>> tasks,
          long timeout,
          TimeUnit unit)指定されたタスクを実行し、タイムアウトになる前に正常に完了したタスクが存在する場合は、その結果を (例外をスローせずに) 返します。 | |
|  boolean | isShutdown()この executorがシャットダウンした場合、true を返します。 | |
|  boolean | isTerminated()シャットダウンに続いてすべてのタスクが完了した場合に、true を返します。 | |
|  void | shutdown()順序に従って実行されるシャットダウンを開始します。 | |
|  List<Runnable> | shutdownNow()実行中のアクティブなタスクすべての停止を試み、待機中のタスクの処理を停止し、実行を待機していたタスクのリストを返します。 | |
| 
 | submit(Callable<T> task)値を返す実行タスクを送信し、保留中のタスク結果を表す Future を返します。 | |
|  Future<?> | submit(Runnable task)実行用の Runnable タスクを送信し、そのタスクを表す Future を返します。 | |
| 
 | submit(Runnable task,
       T result)実行用の Runnable タスクを送信して、完了時に指定された結果を返すタスクを表す Future を返します。 | |
| インタフェース java.util.concurrent.Executor から継承されたメソッド | 
|---|
| execute | 
| メソッドの詳細 | 
|---|
void shutdown()
SecurityException - セキュリティマネージャが存在する状況でシャットダウンを実行すると、この ExecutorService が呼び出し側には変更を許可されないスレッドを操作できる場合。これは、RuntimePermission("modifyThread") を保持しないか、セキュリティマネージャの checkAccess メソッドがアクセスを拒否するためであるList<Runnable> shutdownNow()
実行中のアクティブなタスク処理を停止するために最善の努力をすること以上の保証はありません。たとえば、通常の実装では Thread.interrupt() を介して取り消しが行われるため、タスクが割り込みに対する応答をマスクするか失敗すると、タスクが終了しなくなる可能性があります。
SecurityException - セキュリティマネージャが存在する状況でシャットダウンを実行すると、この ExecutorService が呼び出し側には変更を許可されないスレッドを操作できる場合。これは、RuntimePermission("modifyThread") を保持しないか、セキュリティマネージャの checkAccess メソッドがアクセスを拒否するためであるboolean isShutdown()
boolean isTerminated()
boolean awaitTermination(long timeout,
                         TimeUnit unit)
                         throws InterruptedException
timeout - 待機する最長時間unit - timeout 引数の時間単位
InterruptedException - 待機中に割り込みが発生した場合<T> Future<T> submit(Callable<T> task)
タスクの待機をただちにブロックする場合は、result = exec.submit(aCallable).get(); の形式で指定できます。
 注: Executors クラスには、クロージャに似た他の一般オブジェクトを変換可能なメソッドセット (たとえば、PrivilegedAction を送信可能な Callable 形式に変換できる) が含まれます。
task - 送信するタスク
RejectedExecutionException - タスクの実行をスケジュールできない場合
NullPointerException - タスクが null の場合
<T> Future<T> submit(Runnable task,
                     T result)
task - 送信するタスクresult - 返す結果
RejectedExecutionException - タスクの実行をスケジュールできない場合
NullPointerException - タスクが null の場合Future<?> submit(Runnable task)
task - 送信するタスク
RejectedExecutionException - タスクの実行をスケジュールできない場合
NullPointerException - タスクが null の場合
<T> List<Future<T>> invokeAll(Collection<Callable<T>> tasks)
                          throws InterruptedException
Done は true になります。「完了した」タスクは、通常の方法または例外をスローすることで終了しています。この操作の進行中に指定されたコレクションが変更された場合、このメソッドの結果は定義されません。
tasks - タスクのコレクション
InterruptedException - 待機中に割り込みが発生した場合。この場合、未完了のタスクは取り消される
NullPointerException - タスクまたはそのいずれかの要素が null の場合
RejectedExecutionException - いずれかのタスクの実行をスケジュールできない場合
<T> List<Future<T>> invokeAll(Collection<Callable<T>> tasks,
                              long timeout,
                              TimeUnit unit)
                          throws InterruptedException
Done は true になります。返された時点では、完了していないタスクは取り消されます。「完了した」タスクは、通常の方法または例外をスローすることで終了しています。この操作の進行中に指定されたコレクションが変更された場合、このメソッドの結果は定義されません。
tasks - タスクのコレクションtimeout - 待機する最長時間unit - timeout 引数の時間単位
InterruptedException - 待機中に割り込みが発生した場合。この場合、未完了のタスクは取り消される
NullPointerException - タスク、その要素のいずれか、または単位が null の場合
RejectedExecutionException - いずれかのタスクの実行をスケジュールできない場合
<T> T invokeAny(Collection<Callable<T>> tasks)
            throws InterruptedException,
                   ExecutionException
tasks - タスクのコレクション
InterruptedException - 待機中に割り込みが発生した場合
NullPointerException - タスクまたはそのいずれかの要素が null の場合
IllegalArgumentException - タスクが空の場合
ExecutionException - 正常に完了したタスクが存在しない場合
RejectedExecutionException - タスクの実行をスケジュールできない場合
<T> T invokeAny(Collection<Callable<T>> tasks,
                long timeout,
                TimeUnit unit)
            throws InterruptedException,
                   ExecutionException,
                   TimeoutException
tasks - タスクのコレクションtimeout - 待機する最長時間unit - timeout 引数の時間単位
InterruptedException - 待機中に割り込みが発生した場合
NullPointerException - タスク、その要素のいずれか、または単位が null の場合
TimeoutException - いずれかのタスクが正常に完了する前に、指定されたタイムアウト時間が経過した場合
ExecutionException - 正常に完了したタスクが存在しない場合
RejectedExecutionException - タスクの実行をスケジュールできない場合| 
 | JavaTM 2 Platform Standard Ed. 5.0 | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。