モジュール java.base
パッケージ java.util.concurrent

インタフェースCompletionService<V>

既知のすべての実装クラス:
ExecutorCompletionService

public interface CompletionService<V>
新しい非同期タスクの生成を、完了済みタスクの結果の消費から分離するサービスです。 プロデューサは、実行用のタスクに対してsubmitを実行します。 コンシューマは、完了済みのタスクに対してtakeを実行し、結果を完了した順に処理します。 たとえば、CompletionServiceを使用して、非同期入出力を管理できます。この場合、読取りを実行するタスクはプログラムまたはシステムの一部に送信され、読取りの完了時にプログラムの別の部分で処理されます。処理の順序は、要求された順序とは異なる場合があります。

CompletionServiceは通常、これらのタスクを実際に実行するために個別のExecutorを使用します。この場合、CompletionServiceは内部の完了キューのみを管理します。 ExecutorCompletionServiceクラスは、この手法の実装を提供します。

メモリー整合性効果: タスクをCompletionServiceに送信する前のスレッド内のアクションは、そのタスクによって実行されるアクションの前に発生し、一方それは、対応するtake()からの正常な復帰のあとのアクションよりも前に発生します。

導入されたバージョン:
1.5
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    Future<V> poll()
    次の完了済みタスクを表すFutureを取得して削除します。何も存在しない場合はnullを返します。
    Future<V> poll​(long timeout, TimeUnit unit)
    次の完了済みタスクを表すFutureを取得して削除します。何も存在しない場合は、必要に応じて指定された待機時間まで待機します。
    Future<V> submit​(Runnable task, V result)
    実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。
    Future<V> submit​(Callable<V> task)
    値を返す実行用タスクを送信して、保留状態のタスク結果を表すFutureを返します。
    Future<V> take()
    次の完了済みタスクを表すFutureを取得して削除します。何も存在しない場合は待機します。
  • メソッドの詳細

    • submit

      Future<V> submit​(Callable<V> task)
      値を返す実行用タスクを送信して、保留状態のタスク結果を表すFutureを返します。 完了時に、このタスクを取り出すかポーリングできます。
      パラメータ:
      task - 送信するタスク
      戻り値:
      タスクの保留完了を表すFuture
      例外:
      RejectedExecutionException - タスクの実行をスケジュールできない場合
      NullPointerException - タスクがnullの場合
    • submit

      Future<V> submit​(Runnable task, V result)
      実行用のRunnableタスクを送信し、そのタスクを表すFutureを返します。 完了時に、このタスクを取り出すかポーリングできます。
      パラメータ:
      task - 送信するタスク
      result - 正常に完了した場合に返す結果
      戻り値:
      タスクの保留完了を表すFuture。そのget()メソッドは、完了時に指定された結果値を返します
      例外:
      RejectedExecutionException - タスクの実行をスケジュールできない場合
      NullPointerException - タスクがnullの場合
    • take

      Future<V> take() throws InterruptedException
      次の完了済みタスクを表すFutureを取得して削除します。何も存在しない場合は待機します。
      戻り値:
      次の完了済みタスクを表すFuture
      例外:
      InterruptedException - 待機中に割込みが発生した場合
    • poll

      Future<V> poll()
      次の完了済みタスクを表すFutureを取得して削除します。何も存在しない場合はnullを返します。
      戻り値:
      次の完了済みタスクを表すFuture。何も存在しない場合はnull
    • poll

      Future<V> poll​(long timeout, TimeUnit unit) throws InterruptedException
      次の完了済みタスクを表すFutureを取得して削除します。何も存在しない場合は、必要に応じて指定された待機時間まで待機します。
      パラメータ:
      timeout - 処理を中止するまでの待機時間。単位はunit
      unit - timeoutパラメータの解釈方法を決定するTimeUnit
      戻り値:
      次の完了済みタスクを表すFuture。指定された待機時間が経過しても何も存在しない場合はnull
      例外:
      InterruptedException - 待機中に割込みが発生した場合