CompletableFuture 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
Future A 可明確完成(設定其值與狀態),並可作為CompletionStage支援後續函式與動作的 ,並在完成時觸發。
[Android.Runtime.Register("java/util/concurrent/CompletableFuture", ApiSince=24, DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public class CompletableFuture : Java.Lang.Object, IDisposable, Java.Util.Concurrent.ICompletionStage, Java.Util.Concurrent.IFuture
[<Android.Runtime.Register("java/util/concurrent/CompletableFuture", ApiSince=24, DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type CompletableFuture = class
inherit Object
interface ICompletionStage
interface IJavaObject
interface IDisposable
interface IJavaPeerable
interface IFuture
- 繼承
- 屬性
- 實作
備註
Future A 可明確完成(設定其值與狀態),並可作為CompletionStage支援後續函式與動作的 ,並在完成時觸發。
當兩個或多個執行緒嘗試 #complete complete、 或 #completeExceptionally completeExceptionally#cancel cancel CompletableFuture 時,只有一個執行緒成功。
除了這些及相關直接操作狀態與結果的方法外,CompletableFuture 還實作以下政策介面 CompletionStage : <ul>
<li>對於 em<非非同步>/em< 方法的依賴完備>所提供的動作,可以由完成當前 CompletableFuture 的執行緒執行,或由任何完成方法的呼叫者執行。
<li>所有 <未明確執行者參數的非>同步</em> 方法皆使用 ( ForkJoinPool#commonPool() 除非不支援至少兩級平行處理,此時需建立新執行緒執行每個任務)。 為了簡化監控、除錯與追蹤,所有產生的非同步任務皆為標記介面 AsynchronousCompletionTask的實例。 帶有時間延遲的操作可以使用此類別中定義的適配器方法,例如: supplyAsync(supplier, delayedExecutor(timeout, timeUnit)) 為了支援有延遲和逾時的方法,這個類別最多維護一個守護進程用於觸發和取消動作,而不是執行執行。
<li>所有 CompletionStage 方法皆獨立於其他公開方法實作,因此一個方法的行為不會受到子類中其他方法覆寫的影響。
</ul>
CompletableFuture 也實作 Future 以下政策: <ul>
<由於>(與 FutureTask不同)此類別無法直接控制導致其完成的計算,消去僅被視為另一種例外完備化。 方法 #cancel cancel 與 具有相同的效果 completeExceptionally(new CancellationException())。
#isCompletedExceptionally方法可用來判斷完成未來是否以特殊方式完成。
<li>若發生異常完備且有 CompletionException,則#get()#get(long, TimeUnit)用與 CompletionException 相同原因的 拋出方法 和 ExecutionException 。 為了簡化大多數情境中的使用,這個類別也定義了方法 #join() ,而 #getNow 在這些情況下直接拋出 CompletionException。
</ul>
用於傳遞完備結果(即類型為 T參數)的方法參數可能是空的,但若對其他參數傳入空值,則會導致拋出 。NullPointerException
新增於1.8版本。
的 java.util.concurrent.CompletableFutureJava 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
| 名稱 | Description |
|---|---|
| CompletableFuture() |
會產生一個新的不完整 CompletableFuture。 |
| CompletableFuture(IntPtr, JniHandleOwnership) |
|
屬性
| 名稱 | Description |
|---|---|
| Class |
回傳此 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| IsCancelled |
如果這個CompletableFuture在正常完成前被取消,則會退貨 |
| IsCompletedExceptionally |
如果這個 CompletableFuture 以任何方式異常完成,則會回傳 |
| IsDone |
若以任何方式完成退貨 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
|
| JniPeerMembers |
|
| NumberOfDependents |
回傳預計完成的CompletableFuture數量,其完成尚未完成的CompletableFutures數量。 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| ThresholdClass |
|
| ThresholdType |
|
方法
| 名稱 | Description |
|---|---|
| AcceptEither(ICompletionStage, IConsumer) |
回傳一個新的完備階段,當該階段或另一個階段正常完成時,執行時會以相應結果作為所提供動作的參數。 |
| AcceptEitherAsync(ICompletionStage, IConsumer, IExecutor) |
回傳一個新的 CompletionStage,當該階段或其他指定階段正常完成時,會使用所提供的執行者執行,並以相應結果作為所提供動作的參數。 |
| AcceptEitherAsync(ICompletionStage, IConsumer) |
回傳一個新的 CompletionStage,當該階段或其他指定階段正常完成時,會使用該階段預設的非同步執行設施執行,並以相應結果作為所提供動作的參數。 |
| AllOf(CompletableFuture[]) |
回傳一個新的 CompletableFuture,當所有給定的 CompletableFuture 都完成時,該未來才會完成。 |
| AnyOf(CompletableFuture[]) |
回傳一個新的 CompletableFuture,當任一 CompletableFuture 完成時,該未來會完成,結果相同。 |
| ApplyToEither(ICompletionStage, IFunction) |
回傳一個新的 CompletionStage,當該階段或另一個給定階段正常完成時,執行時會以相應結果作為所提供函式的參數。 |
| ApplyToEitherAsync(ICompletionStage, IFunction, IExecutor) |
回傳一個新的完備階段,當該階段或另一個給定階段正常完成時,會使用所提供的執行器執行,並以相應結果作為所提供函式的參數。 |
| ApplyToEitherAsync(ICompletionStage, IFunction) |
回傳一個新的 CompletionStage,當該階段或其他指定階段正常完成時,會使用該階段預設的非同步執行功能執行,並將相應結果作為所提供函式的參數。 |
| Cancel(Boolean) |
如果還沒完成,請用 完成這個 CompletableFuture 。 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Complete(Object) |
若尚未完成,則將相關方法回傳 |
| CompleteAsync(ISupplier, IExecutor) |
以使用該執行器從非同步任務呼叫的 Supplier 函式結果,完成此 CompletableFuture。 |
| CompleteAsync(ISupplier) |
以使用預設執行器從非同步任務呼叫的 Supplier 函式結果,完成此 CompletableFuture。 |
| CompletedFuture(Object) |
回傳一個已完成且已設定值的新CompletableFuture。 |
| CompletedStage(Object) |
回傳一個已完成且已完成且僅支援介面 |
| CompleteExceptionally(Throwable) |
若尚未完成,會導致 |
| CompleteOnTimeout(Object, Int64, TimeUnit) |
若未在逾時前完成,則以指定值完成此 CompletableFuture。 |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
|
| Copy() |
回傳一個新的 CompletableFuture,該 CompletableFuture 正常完成時的值與該 CompletableFuture 正常完成時相同。 |
| DefaultExecutor() |
回傳用於非同步方法的預設執行器,若不指定執行器。 |
| DelayedExecutor(Int64, TimeUnit, IExecutor) |
回傳一個新的執行者,該執行者在指定延遲(或非正延遲時不延遲)後,向給定的基底執行者提交任務。 |
| DelayedExecutor(Int64, TimeUnit) |
回傳一個新的執行者,該執行者在指定延遲後(或若非正延遲則不延遲)提交給預設執行者。 |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
|
| Equals(Object) |
|
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| Exceptionally(IFunction) |
回傳一個新的 CompletableFuture,當 CompletableFuture 完成時完成,且該例外函式的結果會觸發該 CompletableFuture 的完備;否則,如果這個 CompletableFuture 正常完成,則回傳的 CompletableFuture 也會以相同值正常完成。 |
| ExceptionallyAsync(IFunction, IExecutor) |
|
| ExceptionallyAsync(IFunction) |
|
| ExceptionallyCompose(IFunction) |
|
| ExceptionallyComposeAsync(IFunction, IExecutor) |
|
| ExceptionallyComposeAsync(IFunction) |
|
| ExceptionNow() |
|
| FailedFuture(Throwable) |
回傳一個已以異常完成且已完成的新 CompletableFuture。 |
| FailedStage(Throwable) |
回傳一個新的完結階段,該階段已以異常完成,且僅支援介面 |
| Get() |
必要時等待此未來完成,然後返回結果。 |
| Get(Int64, TimeUnit) |
必要時等待該未來完成最多指定時間,然後若有結果則回傳。 |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| GetNow(Object) |
完成後回傳結果值(或拋出遇到的例外),否則回傳給定的值IfAbsent。 |
| Handle(IBiFunction) |
回傳一個新的 CompletionStage,當該階段正常或例外完成時,會以該階段的結果與例外作為所提供函式的參數執行。 |
| HandleAsync(IBiFunction, IExecutor) |
回傳一個新的 CompletionStage,當該階段正常或異常完成時,會使用所提供的執行器執行,並將該階段的結果與例外作為所提供函式的參數。 |
| HandleAsync(IBiFunction) |
回傳一個新的 CompletionStage,當該階段正常或異常完成時,會使用該階段預設的非同步執行設施執行,並將該階段的結果與例外作為所提供函式的參數。 |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Join() |
完成時回傳結果值,若完成異常則拋出(未被勾選的)例外。 |
| MinimalCompletionStage() |
回傳一個新的 CompletionStage,當 正常完成時,該階段的值與 CompletableFuture 相同,且無法獨立完成或以介面方法未定義 |
| NewIncompleteFuture() |
回傳一個新的未完成 CompletableFuture,該類型為 CompletionStage 方法要回傳的類型。 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| ObtrudeException(Throwable) |
強制使後續的方法 |
| ObtrudeValue(Object) |
強制設定或重置方法及相關方法後續回傳 |
| OrTimeout(Int64, TimeUnit) |
Exceptionably 會用 A 完成 CompletableFuture |
| ResultNow() |
|
| RunAfterBoth(ICompletionStage, IRunnable) |
回傳一個新的完成階段,當此階段與另一個給定階段都正常完成時,執行該動作。 |
| RunAfterBothAsync(ICompletionStage, IRunnable, IExecutor) |
回傳一個新的完成階段,當此階段與另一個指定階段皆正常完成時,會使用所提供的執行器執行該動作。 |
| RunAfterBothAsync(ICompletionStage, IRunnable) |
回傳一個新的完成階段,當此階段與另一個指定階段皆正常完成時,該階段會使用該階段預設的非同步執行機制執行該動作。 |
| RunAfterEither(ICompletionStage, IRunnable) |
回傳一個新的完成階段,當該階段或其他指定階段正常完成時,該階段執行該動作。 |
| RunAfterEitherAsync(ICompletionStage, IRunnable, IExecutor) |
回傳一個新的完備階段,當該階段或另一個階段正常完成時,該階段會使用所提供的執行者執行該動作。 |
| RunAfterEitherAsync(ICompletionStage, IRunnable) |
回傳一個新的完成階段,當該階段或另一個階段正常完成時,會使用該階段預設的非同步執行功能執行該動作。 |
| RunAsync(IRunnable, IExecutor) |
回傳一個新的 CompletableFuture,該任務在執行者執行後非同步完成。 |
| RunAsync(IRunnable) |
回傳一個新的 CompletableFuture,該任務在執行該動作後,由任務在 中 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
|
| State() |
|
| SupplyAsync(ISupplier, IExecutor) |
回傳一個新的 CompletableFuture,該任務由在指定執行者中執行的任務非同步完成,該任務的值與呼叫給定供應商所得。 |
| SupplyAsync(ISupplier) |
回傳一個新的 CompletableFuture,該任務由在 中 |
| ThenAccept(IConsumer) |
回傳一個新的 CompletionStage,當該階段正常完成時,會以該階段的結果作為所提供動作的參數執行。 |
| ThenAcceptAsync(IConsumer, IExecutor) |
回傳一個新的 CompletionStage,當此階段正常完成時,會使用所提供的執行者執行,該階段的結果作為所提供動作的參數。 |
| ThenAcceptAsync(IConsumer) |
回傳一個新的 CompletionStage,當該階段正常完成時,會使用該階段預設的非同步執行機制執行,該階段的結果作為所提供動作的參數。 |
| ThenAcceptBoth(ICompletionStage, IBiConsumer) |
回傳一個新的 CompletionStage,當此階段與另一個指定階段皆正常完成時,會以兩個結果作為所提供動作的參數執行。 |
| ThenAcceptBothAsync(ICompletionStage, IBiConsumer, IExecutor) |
回傳一個新的 CompletionStage,當此階段與另一個給定階段皆正常完成時,會使用所提供的執行者執行,並將這兩個結果作為所提供動作的參數。 |
| ThenAcceptBothAsync(ICompletionStage, IBiConsumer) |
回傳一個新的 CompletionStage,當此階段與另一個指定階段皆正常完成時,會使用該階段預設的非同步執行設施執行,並將兩個結果作為所提供動作的參數。 |
| ThenApply(IFunction) |
回傳一個新的 CompletionStage,當該階段正常完成時,會以該階段的結果作為所提供函式的參數執行。 |
| ThenApplyAsync(IFunction, IExecutor) |
回傳一個新的 CompletionStage,當該階段正常完成時,會使用所提供的執行器執行,該階段的結果作為所提供函式的參數。 |
| ThenApplyAsync(IFunction) |
回傳一個新的 CompletionStage,當該階段正常完成時,會使用該階段預設的非同步執行機制執行,並以該階段的結果作為所提供函式的參數。 |
| ThenCombine(ICompletionStage, IBiFunction) |
回傳一個新的 CompletionStage,當此階段與另一個給定階段皆正常完成時,會以兩個結果作為所提供函式的參數執行。 |
| ThenCombineAsync(ICompletionStage, IBiFunction, IExecutor) |
回傳一個新的 CompletionStage,當此階段與另一個給定階段皆正常完成時,會使用所提供的執行器執行,並將這兩個結果作為所提供函式的參數。 |
| ThenCombineAsync(ICompletionStage, IBiFunction) |
回傳一個新的 CompletionStage,當此階段與另一個指定階段皆正常完成時,會使用該階段預設的非同步執行設施執行,並將兩個結果作為所提供函式的參數。 |
| ThenCompose(IFunction) |
回傳一個新的 CompletionStage,該 CompletionStage 已完成,值與該函式回傳的 Completion Stage 相同。 |
| ThenComposeAsync(IFunction, IExecutor) |
回傳一個新的 CompletionStage,該完成值與該函式回傳的 CompletionStage 相同,並由所提供的執行者執行。 |
| ThenComposeAsync(IFunction) |
回傳一個新的 CompletionStage,該階段的完成值與該函式回傳的 CompletionStage 相同,並使用該階段預設的非同步執行設施執行。 |
| ThenRun(IRunnable) |
回傳一個新的 CompletionStage,當該階段正常完成時,該階段會執行該動作。 |
| ThenRunAsync(IRunnable, IExecutor) |
回傳一個新的完成階段,當該階段正常完成時,會使用所提供的執行者執行該動作。 |
| ThenRunAsync(IRunnable) |
回傳一個新的 CompletionStage,當該階段正常完成時,會使用該階段預設的非同步執行機制執行該動作。 |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToCompletableFuture() |
回傳此 CompletableFuture。 |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| WhenComplete(IBiConsumer) |
回傳一個新的 CompletionStage,結果或例外與此階段相同,當該階段完成時執行該動作。 |
| WhenCompleteAsync(IBiConsumer, IExecutor) |
回傳一個新的 CompletionStage,結果或例外與此階段相同,當該階段完成時,該階段會使用提供的執行者執行該動作。 |
| WhenCompleteAsync(IBiConsumer) |
回傳一個新的 CompletionStage,結果或例外與此階段相同,並在此階段完成時使用該階段預設的非同步執行機制執行該動作。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniObjectReferenceControlBlock |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
| IJavaPeerable.UnregisterFromRuntime() |
|
擴充方法
| 名稱 | Description |
|---|---|
| GetAsync(IFuture, Int64, TimeUnit) |
|
| GetAsync(IFuture) |
|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |