JavaTM Platform
Standard Ed. 6

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 メソッドがブロックします。計算が完了すると、その計算の再開または取り消しはできません。  

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

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

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

コンストラクタの概要
FutureTask(Callable<V> callable)
          指定された Callable を実行時に実行する FutureTask を作成します。
FutureTask(Runnable runnable, V result)
          指定された実行可能タスクを実行時に実行し、かつ正常に完了すると指定された結果を 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 が設定済みの場合または取り消された場合を除き、この Future が ExecutionException とその理由として指定されたスロー可能オブジェクトを報告するようになります。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

FutureTask

public FutureTask(Callable<V> callable)
指定された Callable を実行時に実行する FutureTask を作成します。

パラメータ:
callable - 呼び出し可能なタスク
例外:
NullPointerException - 呼び出し可能レイアウトが null の場合

FutureTask

public FutureTask(Runnable runnable,
                  V result)
指定された実行可能タスクを実行時に実行し、かつ正常に完了すると指定された結果を 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.isDone() の呼び出しでは常に true が返されます。このメソッドが true を返した場合、以降の Future.isCancelled() の呼び出しでは常に true が返されます。

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

get

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

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

get

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

定義:
インタフェース Future<V> 内の get
パラメータ:
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()
取り消されていなければ、この Future に計算結果を設定します。

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

runAndReset

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

戻り値:
実行とリセットに成功した場合は true

JavaTM Platform
Standard Ed. 6

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

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