|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
V - 此 Future 的 get 方法所返回的結果型別public interface Future<V>
Future 表示非同步計算的結果。它提供了檢查計算是否完成的方法,以等待計算的完成,並獲取計算的結果。計算完成後只能使用 get 方法來獲取結果,如有必要,計算完成前可以阻塞此方法。取消則由 cancel 方法來執行。還提供了其他方法,以確定任務是正常完成還是被取消了。一旦計算完成,就不能再取消計算。如果為了可取消性而使用 Future 但又不提供可用的結果,則可以宣告 Future<?> 形式型別、並返回 null 作為底層任務的結果。
用法範例(注意,下列各類別都是建構好的。)
interface ArchiveSearcher { String search(String target); }
class App {
ExecutorService executor = ...
ArchiveSearcher searcher = ...
void showSearch(final String target)
throws InterruptedException {
Future<String> future
= executor.submit(new Callable<String>() {
public String call() {
return searcher.search(target);
}});
displayOtherThings(); // do other things while searching
try {
displayText(future.get()); // use future
} catch (ExecutionException ex) { cleanup(); return; }
}
}
FutureTask 類別是 Future 的一個實作,Future 可實作 Runnable,所以可通過 Executor 來執行。例如,可用下列內容替換上面帶有 submit 的建構:
FutureTask<String> future =
new FutureTask<String>(new Callable<String>() {
public String call() {
return searcher.search(target);
}});
executor.execute(future);
記憶體一致性效果:非同步計算採取的操作 happen-before 另一執行緒中緊跟在相應的 Future.get() 之後的操作。
FutureTask,
Executor| 方法摘要 | |
|---|---|
boolean |
cancel(boolean mayInterruptIfRunning)
試圖取消對此任務的執行。 |
V |
get()
如有必要,等待計算完成,然後獲取其結果。 |
V |
get(long timeout,
TimeUnit unit)
如有必要,最多等待為使計算完成所給定的時間之後,獲取其結果(如果結果可用)。 |
boolean |
isCancelled()
如果在任務正常完成前將其取消,則返回 true。 |
boolean |
isDone()
如果任務已完成,則返回 true。 |
| 方法詳細資訊 |
|---|
boolean cancel(boolean mayInterruptIfRunning)
此方法返回後,對 isDone() 的後續調用將始終返回 true。如果此方法返回 true,則對 isCancelled() 的後續調用將始終返回 true。
mayInterruptIfRunning - 如果應該中斷執行此任務的執行緒,則為 true;否則允許正在運行的任務運行完成
boolean isCancelled()
boolean isDone()
V get()
throws InterruptedException,
ExecutionException
CancellationException - 如果計算被取消
ExecutionException - 如果計算拋出異常
InterruptedException - 如果當前的執行緒在等待時被中斷
V get(long timeout,
TimeUnit unit)
throws InterruptedException,
ExecutionException,
TimeoutException
timeout - 等待的最大時間unit - timeout 參數的時間單位
CancellationException - 如果計算被取消
ExecutionException - 如果計算拋出異常
InterruptedException - 如果當前的執行緒在等待時被中斷
TimeoutException - 如果等待逾時
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。