語言

IFuture 介面

定義

A 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
衍生
屬性
實作

備註

A Future 代表非同步計算的結果。 提供方法用以檢查計算是否完成、等待完成,以及檢索計算結果。 結果只有在計算完成後才能用方法 get 檢索,必要時會阻塞直到結果準備好。 消去則由方法 cancel 執行。 還提供額外方法以判斷任務是否正常完成或被取消。 計算完成後,無法取消。 如果你想使用 a Future 以增加可取消性,但不提供可用的結果,你可以宣告 form 的 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類別是實作 Future的實作Runnable,因此可由 Executor執行。 例如,上述構造 可以 submit 被替換為:

{@code
            FutureTask<String> future = new FutureTask<>(task);
            executor.execute(future);}

記憶體一致性效應:非同步計算<>所採取的行動,i 發生於<前/i> 行動後,在另一執行緒中對應Future.get()的行動之後。

已在1.5中新增。

Java 文件 java.util.concurrent.Future。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

屬性

名稱 Description
Handle

取得底層 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
IsCancelled

如果此任務在正常完成前被取消,則會回傳 true 。

IsDone

如果完成此任務,則返回 true 。

JniIdentityHashCode

回傳包裹實例的 java.lang.System.identityHashCode() 值。

(繼承來源 IJavaPeerable)
JniManagedPeerState

管理貴族的狀況。

(繼承來源 IJavaPeerable)
JniObjectReferenceControlBlock

A Future 代表非同步計算的結果。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取與召喚支援。

(繼承來源 IJavaPeerable)
PeerReference

回傳JniObjectReference包裹後的 Java 物件實例。

(繼承來源 IJavaPeerable)

方法

名稱 Description
Cancel(Boolean)

試圖取消執行此任務。

Disposed()

當實例被處理後才被召喚。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果沒有未解決的參考資料,則 Dispose()呼叫;否則,則不做任何事。

(繼承來源 IJavaPeerable)
ExceptionNow()

回傳任務拋出的例外,無需等待。

Finalized()

當實例完成後才會被通知。

(繼承來源 IJavaPeerable)
Get()

必要時等待計算完成,然後取回結果。

Get(Int64, TimeUnit)

如有需要,最多等待計算完成指定時間,然後若有結果則取回。

InvokeState()

返回計算狀態。

ResultNow()

回傳計算結果,無需等待。

SetJniIdentityHashCode(Int32)

將回傳的值設為 JniIdentityHashCode。

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

A Future 代表非同步計算的結果。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

將回傳的值設為 PeerReference。

(繼承來源 IJavaPeerable)
UnregisterFromRuntime()

取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。

(繼承來源 IJavaPeerable)

擴充方法

名稱 Description
GetAsync(IFuture, Int64, TimeUnit)

A Future 代表非同步計算的結果。

GetAsync(IFuture)

A Future 代表非同步計算的結果。

GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

A Future 代表非同步計算的結果。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於