ICompletionStage 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
可能是非同步計算的一個階段,當另一個完結階段完成時執行動作或計算值。
[Android.Runtime.Register("java/util/concurrent/CompletionStage", "", "Java.Util.Concurrent.ICompletionStageInvoker", ApiSince=24)]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public interface ICompletionStage : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/CompletionStage", "", "Java.Util.Concurrent.ICompletionStageInvoker", ApiSince=24)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type ICompletionStage = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 衍生
- 屬性
- 實作
備註
可能是非同步計算的一個階段,當另一個完結階段完成時執行動作或計算值。 階段在其計算終止後完成,但這可能會觸發其他相依階段。 此介面中定義的功能僅有少數基本形式,並擴展成更廣泛的方法集合,以捕捉多種使用風格:
<UL>
<li>階段執行的計算可表示為函數(Function)、消費者(Consumer)或可執行(Runnable)(分別使用如 <em>apply</em>、<em>accept</em <>或 em>run</em> 等名稱),視是否需要參數及/或產生結果而定。 例如:
{@code
stage.thenApply(x -> square(x))
.thenAccept(x -> System.out.print(x))
.thenRun(() -> System.out.println());}
另一種形式(<em>compose</em>)允許從返回完備階段的函數構建計算管線。
任何對某階段計算的論證,都是觸發階段計算的結果。
<一個>階段的執行可能由完成單一階段、兩個階段的兩個階段,或兩個階段中的任一階段觸發。 單一階段的依賴性會以 em>then</em> 為前綴<的方法進行排列。 由兩階段完成<的 em<> 或 em> 兩階段觸發的,可能會<<>使用相應命名的方法結合/結合>其結果或效果。 由<兩個階段中任一<或 em> 觸發的 em>不保證哪個結果或效應用於相依階段的計算。
<階段>間的依賴性控制計算的觸發,但不保證任何特定的排序。 此外,新階段計算的執行方式可分為三種:預設執行、預設非同步執行(使用帶有 em async</em> 後綴<的方法,並利用該階段預設的非同步執行功能),或自訂(透過提供的 Executor)。> 預設模式與非同步模式的執行屬性由 CompletionStage 實作指定,而非此介面。 具有明確執行者參數的方法可能具有任意執行特性,甚至可能不支援並行執行,但處理方式會以符合非同步的方式進行。
<li>兩種方法形式(#handle handle 和 #whenComplete whenComplete)支持無條件計算,無論觸發階段是否正常完成或例外完成。 此方法 #exceptionally exceptionally 僅在觸發階段異常完成時支援計算,並計算替換結果,類似 Java catch 關鍵字。 在其他所有情況下,若某階段的計算因(未檢查的)異常或錯誤突然終止,則所有需要完成的相依階段也將異常完成,且 CompletionException 該例外為其原因。 如果一個階段依賴 <於 em>兩個<階段的 em> ,且兩者都異常完成,則 CompletionException 可能對應於這兩個例外中的任一。 如果一個階段依賴 <於 em>或< em> 或 em 或其他兩個階段,且只有其中一個階段異常完成,則無法保證該依賴階段是正常完成還是異常完成。 以方法 whenComplete為例,當所提供的動作本身遇到例外時,該階段會以異常完成,除非來源階段也異常完成,此時來源階段的異常完成會被優先處理並傳遞至依賴階段。
</ul>
所有方法都遵循上述觸發、執行及特殊完成規範(這些規範在個別方法規範中不會重複)。 此外,對於接受完備結果的方法,用於傳遞完備結果(即型別T參數 )的參數可能是空,但若對其他參數傳入 null 值,則會導致拋出 。NullPointerException
方法形式 #handle handle 是建立續階段的最一般方式,無條件執行同時給定觸發 CompletionStage 結果與例外(若有)的計算,並計算任意結果。 此方法 #whenComplete whenComplete 類似,但保留觸發階段的結果,而非重新計算。 由於一個階段的正常結果可能為 null,這兩種方法的計算結構都應該是:
{@code (result, exception) -> {
if (exception == null) {
// triggering stage completed normally
} else {
// triggering stage completed exceptionally
}
}}
此介面未定義初始建立、強制正常或異常完成、探測完成狀態或結果,或等待階段完成的方法。 CompletionStage 的實作可依情況提供實現此類效果的手段。 方法 #toCompletableFuture 透過提供共通的轉換類型,使不同介面實作間的互通性成為可能。
新增於1.8版本。
Java 文件 java.util.concurrent.CompletionStage。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
屬性
| 名稱 | Description |
|---|---|
| Handle |
取得底層 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
| JniIdentityHashCode |
回傳包裹實例的 |
| JniManagedPeerState |
管理貴族的狀況。 (繼承來源 IJavaPeerable) |
| JniPeerMembers |
成員存取與召喚支援。 (繼承來源 IJavaPeerable) |
| PeerReference |
回傳JniObjectReference包裹後的 Java 物件實例。 (繼承來源 IJavaPeerable) |
方法
| 名稱 | Description |
|---|---|
| AcceptEither(ICompletionStage, IConsumer) |
回傳一個新的完備階段,當該階段或另一個階段正常完成時,執行時會以相應結果作為所提供動作的參數。 |
| AcceptEitherAsync(ICompletionStage, IConsumer, IExecutor) |
回傳一個新的 CompletionStage,當該階段或其他指定階段正常完成時,會使用所提供的執行者執行,並以相應結果作為所提供動作的參數。 |
| AcceptEitherAsync(ICompletionStage, IConsumer) |
回傳一個新的 CompletionStage,當該階段或其他指定階段正常完成時,會使用該階段預設的非同步執行設施執行,並以相應結果作為所提供動作的參數。 |
| ApplyToEither(ICompletionStage, IFunction) |
回傳一個新的 CompletionStage,當該階段或另一個給定階段正常完成時,執行時會以相應結果作為所提供函式的參數。 |
| ApplyToEitherAsync(ICompletionStage, IFunction, IExecutor) |
回傳一個新的完備階段,當該階段或另一個給定階段正常完成時,會使用所提供的執行器執行,並以相應結果作為所提供函式的參數。 |
| ApplyToEitherAsync(ICompletionStage, IFunction) |
回傳一個新的 CompletionStage,當該階段或其他指定階段正常完成時,會使用該階段預設的非同步執行功能執行,並將相應結果作為所提供函式的參數。 |
| Disposed() |
當實例被處理後才被召喚。 (繼承來源 IJavaPeerable) |
| DisposeUnlessReferenced() |
如果沒有未解決的參考資料,則 |
| Exceptionally(IFunction) |
回傳一個新的 CompletionStage,當此階段異常完成時,會以該階段的例外作為所提供函式的參數執行。 |
| ExceptionallyAsync(IFunction, IExecutor) |
回傳一個新的 CompletionStage,當該階段異常完成時,會以該階段的例外作為所提供函式的參數執行,並使用所提供的執行者執行。 |
| ExceptionallyAsync(IFunction) |
回傳一個新的 CompletionStage,當此階段異常完成時,會以該階段的例外作為所提供函式的參數執行,並使用該階段預設的非同步執行功能。 |
| ExceptionallyCompose(IFunction) |
回傳一個新的 CompletionStage,當此階段異常完成時,該階段會根據所提供函數對該階段例外的結果組合而成。 |
| ExceptionallyComposeAsync(IFunction, IExecutor) |
回傳一個新的 CompletionStage,當此階段異常完成時,該階段會利用所提供函式對該階段例外的結果組合,並使用所提供的執行者。 |
| ExceptionallyComposeAsync(IFunction) |
回傳一個新的 CompletionStage,當此階段異常完成時,該階段會利用該階段預設的非同步執行功能,將所提供函式的結果組合而成。 |
| Finalized() |
當實例完成後才會被通知。 (繼承來源 IJavaPeerable) |
| Handle(IBiFunction) |
回傳一個新的 CompletionStage,當該階段正常或例外完成時,會以該階段的結果與例外作為所提供函式的參數執行。 |
| HandleAsync(IBiFunction, IExecutor) |
回傳一個新的 CompletionStage,當該階段正常或異常完成時,會使用所提供的執行器執行,並將該階段的結果與例外作為所提供函式的參數。 |
| HandleAsync(IBiFunction) |
回傳一個新的 CompletionStage,當該階段正常或異常完成時,會使用該階段預設的非同步執行設施執行,並將該階段的結果與例外作為所提供函式的參數。 |
| RunAfterBoth(ICompletionStage, IRunnable) |
回傳一個新的完成階段,當此階段與另一個給定階段都正常完成時,執行該動作。 |
| RunAfterBothAsync(ICompletionStage, IRunnable, IExecutor) |
回傳一個新的完成階段,當此階段與另一個指定階段皆正常完成時,會使用所提供的執行器執行該動作。 |
| RunAfterBothAsync(ICompletionStage, IRunnable) |
回傳一個新的完成階段,當此階段與另一個指定階段皆正常完成時,該階段會使用該階段預設的非同步執行機制執行該動作。 |
| RunAfterEither(ICompletionStage, IRunnable) |
回傳一個新的完成階段,當該階段或其他指定階段正常完成時,該階段執行該動作。 |
| RunAfterEitherAsync(ICompletionStage, IRunnable, IExecutor) |
回傳一個新的完備階段,當該階段或另一個階段正常完成時,該階段會使用所提供的執行者執行該動作。 |
| RunAfterEitherAsync(ICompletionStage, IRunnable) |
回傳一個新的完成階段,當該階段或另一個階段正常完成時,會使用該階段預設的非同步執行功能執行該動作。 |
| SetJniIdentityHashCode(Int32) |
將回傳的值設為 |
| SetJniManagedPeerState(JniManagedPeerStates) |
可能是非同步計算的一個階段,當另一個完結階段完成時執行動作或計算值。 (繼承來源 IJavaPeerable) |
| SetPeerReference(JniObjectReference) |
將回傳的值設為 |
| 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,當該階段正常完成時,會使用該階段預設的非同步執行機制執行該動作。 |
| ToCompletableFuture() |
回傳 a |
| UnregisterFromRuntime() |
取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。 (繼承來源 IJavaPeerable) |
| WhenComplete(IBiConsumer) |
回傳一個新的 CompletionStage,結果或例外與此階段相同,當該階段完成時執行該動作。 |
| WhenCompleteAsync(IBiConsumer, IExecutor) |
回傳一個新的 CompletionStage,結果或例外與此階段相同,當該階段完成時,該階段會使用提供的執行者執行該動作。 |
| WhenCompleteAsync(IBiConsumer) |
回傳一個新的 CompletionStage,結果或例外與此階段相同,並在此階段完成時使用該階段預設的非同步執行機制執行該動作。 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
| JavaCast<TResult>(IJavaObject) |
可能是非同步計算的一個階段,當另一個完結階段完成時執行動作或計算值。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |