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

クラスFutureTask<V>

  • 型パラメータ:
    V - このFutureTaskのgetメソッドで返される結果型
    すべての実装されたインタフェース:
    Runnable, Future<V>, RunnableFuture<V>
    直系の既知のサブクラス:
    Task


    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 done​()
      このタスクの状態が(正常に、または取消しによって) isDoneに切り替わるときに呼び出されるprotectedメソッドです。
      V get​()
      必要に応じて計算が完了するまで待機し、その後、計算結果を取得します。
      V get​(long timeout, TimeUnit unit)
      必要に応じて、最大で指定された時間、計算が完了するまで待機し、その後、計算結果が利用可能な場合は結果を取得します。
      boolean isCancelled​()
      このタスクが正常に完了する前に取り消された場合はtrueを返します。
      boolean isDone​()
      このタスクが完了した場合はtrueを返します。
      void run​()
      取り消されていなければ、このFutureに計算結果を設定します。
      protected boolean runAndReset​()
      結果を設定せずに計算を実行し、このfutureを初期状態にリセットします。計算時に例外が発生した場合または計算が取り消された場合は失敗します。
      protected void set​(V v)
      このfutureが設定済みの場合または取り消された場合を除き、このfutureの結果に指定された値を設定します。
      protected void setException​(Throwable t)
      このfutureが設定済みの場合または取り消された場合を除き、このfutureがExecutionExceptionと、その理由として指定されたスロー可能オブジェクトを報告するようになります。
    • コンストラクタの詳細

      • 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.isDone()の呼出しは常にtrueを返します。 このメソッドがtrueを返した場合、後続のFuture.isCancelled()の呼出しは常にtrueを返します。

        定義:
        cancel 、インタフェース: Future<V>
        パラメータ:
        mayInterruptIfRunning - このタスクを実行しているスレッドに割り込む必要がある場合はtrue、そうでない場合は、実行中のタスクを完了できる
        戻り値:
        タスクを取り消せなかった場合はfalse (通常はタスクがすでに正常に完了していたため)、そうでない場合はtrue
      • 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>
        関連項目:
        Thread.run()
      • runAndReset

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