JavaTM 2 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 套件裝 CallableRunnable 物件。因為 FutureTask 實作了 Runnable,所以可將 FutureTask 提交給 Executor 執行。

除了作為一個獨立的類別外,此類別還提供了 protected 功能,這在創建自定義任務類別時可能很有用。

從以下版本開始:
1.5

建構子摘要
FutureTask(Callable<V> callable)
          創建一個 FutureTask,一旦運行就執行給定的 Callable
FutureTask(Runnable runnable, V result)
          創建一個 FutureTask,一旦運行就執行給定的 Runnable,並安排成功完成時 get 返回給定的結果 。
 
方法摘要
 boolean cancel(boolean mayInterruptIfRunning)
          試圖取消對此任務的執行。
protected  void done()
          當此任務轉換到狀態 isDone(不管是正常地還是通過取消)時,調用受保護的方法。
 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 或已將其取消,否則將其結果設置為給定的值。
protected  void setException(Throwable t)
          除非已經設置了此 Future 或已將其取消,否則它將報告一個 ExecutionException,並將給定的 throwable 作為其原因。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

FutureTask

public FutureTask(Callable<V> callable)
創建一個 FutureTask,一旦運行就執行給定的 Callable

參數:
callable - 可調用的任務。
拋出:
NullPointerException - 如果 callable 為 null。

FutureTask

public FutureTask(Runnable runnable,
                  V result)
創建一個 FutureTask,一旦運行就執行給定的 Runnable,並安排成功完成時 get 返回給定的結果 。

參數:
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(不管是正常地還是通過取消)時,調用受保護的方法。預設實作不執行任何操作。子類別可以覆寫此方法,以調用完成回調或執行簿記。注意,可以查詢此方法的實作內的狀態,從而確定是否已取消了此任務。


set

protected void set(V v)
除非已經設置了此 Future 或已將其取消,否則將其結果設置為給定的值。在計算成功完成時通過 run 方法內部調用此方法。

參數:
v - 值

setException

protected void setException(Throwable t)
除非已經設置了此 Future 或已將其取消,否則它將報告一個 ExecutionException,並將給定的 throwable 作為其原因。在計算失敗時通過 run 方法內部調用此方法。

參數:
t - 失敗的原因

run

public void run()
除非已將此 Future 取消,否則將其設置為其計算的結果。

指定者:
介面 Runnable 中的 run
指定者:
介面 RunnableFuture<V> 中的 run
另請參見:
Thread.run()

runAndReset

protected boolean runAndReset()
執行計算而不設置其結果,然後將此 Future 重置為初始狀態,如果計算遇到異常或已取消,則該操作失敗。本操作被設計用於那些本質上要執行多次的任務。

返回:
如果成功運行並重置,則返回 true。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only