クラスFutureTask<V>

java.lang.Object
java.util.concurrent.FutureTask<V>
型パラメータ:
V - このFutureTaskのgetメソッドによって返される結果タイプ
すべての実装されたインタフェース:
Runnable, Future<V>, RunnableFuture<V>

public class FutureTask<V> extends Object implements RunnableFuture<V>
取消し可能な非同期計算です。 このクラスはFutureのベース実装を提供し、計算の開始と取消し、計算が完了したかどうかの問合せ、計算結果の取得などを行うメソッドを持っています。 結果は、計算の完了時にのみ取得できます。計算がま 完了していないうちはgetメソッドがブロックします。 計算が完了すると、その計算の再開または取消しはできません(その計算がrunAndReset()を使用して呼び出される 合を除く)。

FutureTaskを使用すると、CallableまたはRunnableオブジェクトをラップできます。 FutureTaskRunnableを実装するので、FutureTaskExecutorに送信して実行できます。

スタンドアロン・クラスとして機能する けでなく、このクラスでは、カスタマイズしたタスク・クラスの作成時に便利なprotected機能を提供します。

導入されたバージョン:
1.5
  • ネストされたクラスのサマリー

    インタフェースjava.util.concurrent.Futureで宣言されたネストされたクラス/インタフェース

    Future.State
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    FutureTask(Runnable runnable, V result)
    指定されたRunnableを実行時に実行し、かつ正常に完了すると指定された結果をgetで返すFutureTaskを作成します。
    FutureTask(Callable<V> callable)
    指定されたCallableを実行時に実行するFutureTaskを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    boolean
    cancel(boolean mayInterruptIfRunning)
    このタスクの実行の取消しを試みます。
    protected void
    このタスクの状態が(正常に、または取消しによって) isDoneに切り替わるときに呼び出されるprotectedメソッドです。
    待機せずにタスクによってスローされた例外を返します。
    get()
    必要に応じて計算が完了するまで待機し、その後、計算結果を取得します。
    get(long timeout, TimeUnit unit)
    必要に応じて、最大で指定された時間、計算が完了するまで待機し、その後、計算結果が利用可能な 合は結果を取得します。
    boolean
    このタスクが正常に完了する前に取り消された 合はtrueを返します。
    boolean
    このタスクが完了した 合はtrueを返します。
    計算された結果を待たずに返します。
    void
    run()
    取り消されていなければ、このFutureに計算結果を設定します。
    protected boolean
    結果を設定せずに計算を実行し、このfutureを初期状態にリセットします。計算時に例外が発生した 合または計算が取り消された 合は失敗します。
    protected void
    set(V v)
    このfutureが設定済みの 合または取り消された 合を除き、このfutureの結果に指定された値を設定します。
    protected void
    このFutureが設定済みの 合または取り消された 合を除き、このFutureがExecutionExceptionと、その理由として指定されたスロー可能オブジェクトを 告するようになります。
    計算状態を返します。
    このFutureTaskの文字列表現を返します。

    クラスjava.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • FutureTask

      public FutureTask(Callable<V> callable)
      指定されたCallableを実行時に実行するFutureTaskを作成します。
      パラメータ:
      callable - 呼出し可能なタスク
      スロー:
      NullPointerException - callableがnullの 合
    • FutureTask

      public FutureTask(Runnable runnable, V result)
      指定されたRunnableを実行時に実行し、かつ正常に完了すると指定された結果をgetで返すFutureTaskを作成します。
      パラメータ:
      runnable - 実行可能なタスク
      result - 正常に完了したときに返す結果。 特定の結果が必要ない 合は、Future<?> f = new FutureTask<Void>(runnable, null)という形式の構築の使用を考慮すること
      スロー:
      NullPointerException - runnableがnullの 合
  • メソッドの詳細

    • isCancelled

      public boolean isCancelled()
      次のインタフェースからコピーされた説明: Future
      このタスクが正常に完了する前に取り消された 合はtrueを返します。
      定義:
      isCancelled、インタフェースFuture<V>
      戻り値:
      このタスクが完了する前に取り消された 合はtrue
    • isDone

      public boolean isDone()
      次のインタフェースからコピーされた説明: Future
      このタスクが完了した 合はtrueを返します。 完了の理由は、正常終了、例外、取り消しなどがありますが、いずれの 合もこのメソッドはtrueを返します。
      定義:
      isDone、インタフェースFuture<V>
      戻り値:
      このタスクが完了した 合はtrue
    • cancel

      public boolean cancel(boolean mayInterruptIfRunning)
      次のインタフェースからコピーされた説明: Future
      このタスクの実行の取消しを試みます。 このメソッドは、タスクが既に完了または取消されている 合や、他の理由で取消されない 合には効果がありません。 それ以外の 合、cancelがコールされたときにこのタスクが開始されていない 合、このタスクは実行されません。 タスクがすでに開始されている 合、mayInterruptIfRunningパラメータにより、このタスク(実装によって既知の 合)を実行しているスレッドがタスクを停止しようとして中断されるかどうかが決まります。

      このメソッドからの戻り値は、必ずしもタスクが取り消されたかどうかを示すわけではありません。Future.isCancelled()を使用します。

      定義:
      cancel、インタフェースFuture<V>
      パラメータ:
      mayInterruptIfRunning - このタスクを実行するスレッドが(スレッドが実装に認識される 合)を中断する必要がある 合、true。中断しない 合は、進行中のタスクを完了できます
      戻り値:
      タスクを取り消すことができなかった 合はfalse(通常は完了しているため)、それ以外の 合はtrue 2つ以上のスレッドによってタスクが取り消された 合、そのうち少なくとも1つはtrueを返します。 実装によって、より強力な保証が提供されます。
    • get

      次のインタフェースからコピーされた説明: Future
      必要に応じて計算が完了するまで待機し、その後、計算結果を取得します。
      定義:
      get、インタフェースFuture<V>
      戻り値:
      計算結果
      スロー:
      CancellationException - 計算が取り消された 合
      InterruptedException - 待機中に現在のスレッドで割込みが発生した 合
      ExecutionException - 計算で例外がスローされた 合
    • get

      public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
      次のインタフェースからコピーされた説明: Future
      必要に応じて、最大で指定された時間、計算が完了するまで待機し、その後、計算結果が利用可能な 合は結果を取得します。
      定義:
      get、インタフェースFuture<V>
      パラメータ:
      timeout - 待機する最長時間
      unit - timeout引数の時間単位
      戻り値:
      計算結果
      スロー:
      CancellationException - 計算が取り消された 合
      InterruptedException - 待機中に現在のスレッドで割込みが発生した 合
      ExecutionException - 計算で例外がスローされた 合
      TimeoutException - 待機がタイ ・アウトになった 合
    • resultNow

      public V resultNow()
      次のインタフェースからコピーされた説明: Future
      計算された結果を待たずに返します。

      このメソッドは、タスクがすでに正常に完了していることをコール元が認識する 合に使用します。たとえば、成功したタスクについてFutureオブジェクトのストリー をフィルタ処理し、マッピング演算を使用して結果のストリー を取得する 合などです。

          results = futures.stream()
                     .filter(f -> f.state() == Future.State.SUCCESS)
                     .map(Future::resultNow)
                     .toList();
      

      定義:
      インタフェースFuture<V>内のresultNow
      戻り値:
      計算結果
      導入されたバージョン:
      19
    • exceptionNow

      public Throwable exceptionNow()
      次のインタフェースからコピーされた説明: Future
      待機せずにタスクによってスローされた例外を返します。

      このメソッドは、タスクがすでに例外で完了していることをコール元が認識している 合に発生します。

      定義:
      インタフェースFuture<V>内のexceptionNow
      戻り値:
      タスクによってスローされた例外
      導入されたバージョン:
      19
    • state

      public Future.State state()
      次のインタフェースからコピーされた説明: Future
      計算状態を返します。
      定義:
      インタフェースFuture<V>内のstate
      戻り値:
      計算状態
      導入されたバージョン:
      19
    • done

      protected void done()
      このタスクの状態が(正常に、または取消しによって) isDoneに切り替わるときに呼び出されるprotectedメソッドです。 デフォルト実装は何も実行しません。 サブクラスは、このメソッドをオーバーライドして、完了コールバックの呼び出しまたは登録の処理を実行することがあります。 このメソッドの実装内部でステータスを照会して、このタスクが取り消されていないかどうかを確認することができます。
    • set

      protected void set(V v)
      このfutureが設定済みの 合または取り消された 合を除き、このfutureの結果に指定された値を設定します。

      このメソッドは、計算の正常完了時にrun()メソッドで内部的に呼び出されます。

      パラメータ:
      v - 値
    • setException

      protected void setException(Throwable t)
      このFutureが設定済みの 合または取り消された 合を除き、このFutureがExecutionExceptionと、その理由として指定されたスロー可能オブジェクトを 告するようになります。

      このメソッドは、計算の失敗時にrun()メソッドで内部的に呼び出されます。

      パラメータ:
      t - 失敗の原 
    • run

      public void run()
      次のインタフェースからコピーされた説明: RunnableFuture
      取り消されていなければ、このFutureに計算結果を設定します。
      定義:
      run、インタフェースRunnable
      定義:
      run、インタフェースRunnableFuture<V>
    • runAndReset

      protected boolean runAndReset()
      結果を設定せずに計算を実行し、このfutureを初期状態にリセットします。計算時に例外が発生した 合または計算が取り消された 合は失敗します。 本来、複数回実行されるタスクとともに使用するために設計されています。
      戻り値:
      実行とリセットに成功した 合はtrue
    • toString

      public String toString()
      このFutureTaskの文字列表現を返します。
      オーバーライド:
      toString、クラスObject
      実装要件:
      デフォルト実装は、このFutureTaskとその完了状態を識別する文字列を返します。 状態(大カッコ内)には、文字列"Completed Normally", "Completed Exceptionally", "Cancelled"または "Not completed"のいずれかが含まれます。
      戻り値:
      このFutureTaskの文字列表現