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

クラス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
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    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 - 待機がタイム・アウトになった場合
    • 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の文字列表現