IFuture 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
Future
表示異步計算的結果。
[Android.Runtime.Register("java/util/concurrent/Future", "", "Java.Util.Concurrent.IFutureInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public interface IFuture : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/Future", "", "Java.Util.Concurrent.IFutureInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type IFuture = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 衍生
- 屬性
- 實作
備註
Future
表示異步計算的結果。 系統會提供方法來檢查計算是否完成、等候其完成,以及擷取計算的結果。 只有在計算完成時,才能使用 方法 get
擷取結果,並在必要時封鎖,直到準備好為止。 取消是由 cancel
方法執行。 提供其他方法,以判斷工作是否已正常完成或取消。 計算完成後,就無法取消計算。 如果您想要為了取消性而使用 Future
,但不提供可使用的結果,您可以宣告表單 Future<?>
的類型,並傳回 null
作為基礎工作的結果。
<b>範例使用方式</b> (請注意,下列類別全部組成。
{@code
interface ArchiveSearcher { String search(String target); }
class App {
ExecutorService executor = ...;
ArchiveSearcher searcher = ...;
void showSearch(String target) throws InterruptedException {
Callable<String> task = () -> searcher.search(target);
Future<String> future = executor.submit(task);
displayOtherThings(); // do other things while searching
try {
displayText(future.get()); // use future
} catch (ExecutionException ex) { cleanup(); return; }
}
}}
類別FutureTask
是 實作 Runnable
的 Future
實作,因此可由 執行Executor
。 例如,上述建構 submit
可以取代為:
{@code
FutureTask<String> future = new FutureTask<>(task);
executor.execute(future);}
記憶體一致性效果:異步計算 <i>在另一個線程中對應的Future.get()
動作<之前/i> 動作所採取的動作。
已在1.5中新增。
的 java.util.concurrent.Future
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
屬性
Handle |
取得基礎 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
IsCancelled |
如果此工作在正常完成之前取消,則傳 |
IsDone |
如果這項工作已完成,則傳 |
JniIdentityHashCode |
傳回包裝實例的 值 |
JniManagedPeerState |
受控對等的狀態。 (繼承來源 IJavaPeerable) |
JniPeerMembers |
成員存取和調用支援。 (繼承來源 IJavaPeerable) |
PeerReference |
傳 JniObjectReference 回已包裝 Java 物件實例的 。 (繼承來源 IJavaPeerable) |
方法
Cancel(Boolean) |
嘗試取消此工作的執行。 |
Disposed() |
處置實例時呼叫。 (繼承來源 IJavaPeerable) |
DisposeUnlessReferenced() |
如果這個實例沒有未完成的參考,則呼叫 |
Finalized() |
實例完成時呼叫。 (繼承來源 IJavaPeerable) |
Get() |
視需要等候計算完成,然後擷取其結果。 |
Get(Int64, TimeUnit) |
視需要等候最多指定的時間讓計算完成,然後在可用時擷取其結果。 |
SetJniIdentityHashCode(Int32) |
設定所 |
SetJniManagedPeerState(JniManagedPeerStates) |
|
SetPeerReference(JniObjectReference) |
設定所 |
UnregisterFromRuntime() |
取消註冊此實例,讓運行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。 (繼承來源 IJavaPeerable) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
|
GetJniTypeName(IJavaPeerable) |
|
GetAsync(IFuture, Int64, TimeUnit) |
|
GetAsync(IFuture) |
|