V
- このFutureTaskのget
メソッドで返される結果型public class FutureTask<V> extends Object implements RunnableFuture<V>
Future
のベース実装を提供し、計算の開始と取消し、計算が完了したかどうかの問合せ、計算結果の取得などを行うメソッドを持っています。結果は、計算の完了時にのみ取得できます。計算がまだ完了していないうちはget
メソッドがブロックします。計算が完了すると、その計算の再開または取消しはできません(その計算がrunAndReset()
を使用して呼び出される場合を除く)。
FutureTask
を使用すると、Callable
またはRunnable
オブジェクトをラップできます。FutureTask
はRunnable
を実装するので、FutureTask
をExecutor
に送信して実行できます。
スタンドアロン・クラスとして機能するだけでなく、このクラスでは、カスタマイズしたタスク・クラスの作成時に便利なprotected
機能を提供します。
コンストラクタと説明 |
---|
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が設定済みの場合または取り消された場合を除き、このfutureが
ExecutionException と、その理由として指定されたスロー可能オブジェクトを報告するようになります。 |
public FutureTask(Callable<V> callable)
Callable
を実行時に実行するFutureTask
を作成します。callable
- 呼出し可能なタスクNullPointerException
- callableがnullの場合public FutureTask(Runnable runnable, V result)
Runnable
を実行時に実行し、かつ正常に完了すると指定された結果をget
で返すFutureTask
を作成します。runnable
- 実行可能なタスクresult
- 正常に完了したときに返す結果。特定の結果が必要ない場合は、Future<?> f = new FutureTask<Void>(runnable, null)
という形式の構築の使用を考慮することNullPointerException
- runnableがnullの場合public boolean isCancelled()
Future
true
を返します。isCancelled
、インタフェース: Future<V>
true
public boolean isDone()
Future
true
を返します。完了の理由は、正常終了、例外、取り消しなどがありますが、いずれの場合もこのメソッドはtrue
を返します。public boolean cancel(boolean mayInterruptIfRunning)
Future
cancel
の呼出し時にこのタスクが起動しなかった場合、このタスクが実行されることはありません。タスクが起動済みの場合は、このタスクの停止を試みる際、このタスクを実行しているスレッドに割り込む必要があるかどうかは、mayInterruptIfRunning
パラメータで判断します。
このメソッドが復帰すると、その後のFuture.isDone()
の呼出しは常にtrue
を返します。このメソッドがtrueを返した場合、後続の
Future.isCancelled()の呼出しは常に
true
を返します。
public V get() throws InterruptedException, ExecutionException
Future
get
、インタフェース: Future<V>
CancellationException
- 計算が取り消された場合InterruptedException
- 待機中に現在のスレッドで割込みが発生した場合ExecutionException
- 計算で例外がスローされた場合public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
Future
get
、インタフェース: Future<V>
timeout
- 待機する最長時間unit
- timeout引数の時間単位CancellationException
- 計算が取り消された場合InterruptedException
- 待機中に現在のスレッドで割込みが発生した場合ExecutionException
- 計算で例外がスローされた場合TimeoutException
- 待機がタイム・アウトになった場合protected void done()
isDone
に切り替わるときに呼び出されるprotectedメソッドです。デフォルト実装は何も実行しません。サブクラスは、このメソッドをオーバーライドして、完了コールバックの呼び出しまたは登録の処理を実行することがあります。このメソッドの実装内部でステータスを照会して、このタスクが取り消されていないかどうかを確認することができます。protected void set(V v)
このメソッドは、計算の正常完了時にrun()
メソッドで内部的に呼び出されます。
v
- 値protected void setException(Throwable t)
ExecutionException
と、その理由として指定されたスロー可能オブジェクトを報告するようになります。
このメソッドは、計算の失敗時にrun()
メソッドで内部的に呼び出されます。
t
- 失敗の原因public void run()
RunnableFuture
run
、インタフェース: Runnable
run
、インタフェース: RunnableFuture<V>
Thread.run()
protected boolean runAndReset()
true
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。