JavaTM 2 Platform
Standard Ed. 5.0

java.util.concurrent
クラス FutureTask<V>

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

public class FutureTask<V>
extends Object
implements Future<V>, Runnable

取り消し可能な非同期計算。このクラスは、計算の開始および取り消し、計算の完了の照会、および計算結果の取得を行うメソッドを含む Future の基本実装を提供します。結果は、計算の完了時にのみ取得できます。計算が完了していない場合、get メソッドによりブロックが実行されます。いったん計算が完了したら、計算を再開始したり、取り消したりすることはできません。

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

このクラスは、スタンドアロンのクラスとして動作することに加え、カスタマイズされたタスククラスの作成時に役立つ protected 機能を提供します。

導入されたバージョン:
1.5

コンストラクタの概要
FutureTask(Callable<V> callable)
          実行時に指定された Callable を実行する FutureTask を作成します。
FutureTask(Runnable runnable, V result)
          実行時に指定された Runnable を実行し、正常に完了した場合に get が指定された結果を返すように取り決める 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 が設定または取り消し済みでないかぎり、指定された throwable を原因とする ExecutionException を future がレポートするようにします。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, 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<Object>(runnable, null) 形式の使用を考慮する
例外:
NullPointerException - runnable が null の場合
メソッドの詳細

isCancelled

public boolean isCancelled()
インタフェース Future の記述:
このタスクが通常どおり完了する前に取り消された場合は true を返します。

定義:
インタフェース Future<V> 内の isCancelled
戻り値:
タスクが完了する前に取り消された場合は true

isDone

public boolean isDone()
インタフェース Future の記述:
このタスクが完了した場合は、true を返します。 完了の原因には、正常終了、例外、または取り消しがあります。これらのどの場合でも、このメソッドは true を返します。

定義:
インタフェース Future<V> 内の isDone
戻り値:
このタスクが完了した場合は、true

cancel

public boolean cancel(boolean mayInterruptIfRunning)
インタフェース Future の記述:
このタスクの実行の取り消しを試みます。タスクが完了しているか、取り消されているか、他の何らかの理由で取り消すことができない場合、この試みは失敗します。実行の取り消しが成功し、cancel が呼び出されたときにこのタスクが開始されていない場合、このタスクは決して実行されません。タスクがすでに起動している場合、mayInterruptIfRunning パラメータは、このタスクを停止するために、タスクを実行中のスレッドに割り込みを行う必要があるかどうかを判別します。

定義:
インタフェース Future<V> 内の cancel
パラメータ:
mayInterruptIfRunning - このタスクを実行中のスレッドに割り込みを行う必要がある場合は true、そうでない場合は、進行中のタスクが完了することが許可される
戻り値:
タスクはすでに正常に完了しているなどの理由でタスクを取り消すことができない場合は false、そうでない場合は true

get

public V get()
      throws InterruptedException,
             ExecutionException
インタフェース Future の記述:
必要に応じて計算が完了するまで待機し、その後、結果を取得します。

定義:
インタフェース Future<V> 内の get
戻り値:
計算結果
例外:
InterruptedException - 待機中に、現在のスレッドで割り込みが発生した場合
ExecutionException - 計算により例外がスローされた場合

get

public V get(long timeout,
             TimeUnit unit)
      throws InterruptedException,
             ExecutionException,
             TimeoutException
インタフェース Future の記述:
必要に応じて、計算が完了するのを指定された時間まで待機します。その後、可能であれば結果を取得します。

定義:
インタフェース Future<V> 内の get
パラメータ:
timeout - 待機する最長時間
unit - timeout 引数の時間単位
戻り値:
計算結果
例外:
InterruptedException - 待機中に、現在のスレッドで割り込みが発生した場合
ExecutionException - 計算により例外がスローされた場合
TimeoutException - 指定された待機時間が経過した場合

done

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


set

protected void set(V v)
この future が設定または取り消し済みでないかぎり、この Future の結果を指定された値に設定します。

パラメータ:
v - 値

setException

protected void setException(Throwable t)
この Future が設定または取り消し済みでないかぎり、指定された throwable を原因とする ExecutionException を future がレポートするようにします。

パラメータ:
t - 障害の原因

run

public void run()
取り消されたのでないかぎり、この Future を計算結果に設定します。

定義:
インタフェース Runnable 内の run
関連項目:
Thread.run()

runAndReset

protected boolean runAndReset()
結果を設定せずに計算を実行し、この Future を初期状態にリセットします。計算で例外が発生するか計算が取り消されると、この処理が失敗します。これは、複数回の実行が組み込まれたタスクで使用するように設計されています。

戻り値:
実行およびリセットが成功した場合は true

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。