|
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。