語言

RecursiveTask 類別

定義

一個遞迴結果 ForkJoinTask

[Android.Runtime.Register("java/util/concurrent/RecursiveTask", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public abstract class RecursiveTask : Java.Util.Concurrent.ForkJoinTask
[<Android.Runtime.Register("java/util/concurrent/RecursiveTask", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type RecursiveTask = class
    inherit ForkJoinTask
繼承
屬性

備註

一個遞迴結果 ForkJoinTask

例如,這裡有一個基於任務的階乘計算程式:

{@code
            import java.util.concurrent.RecursiveTask;
            import java.math.BigInteger;
            public class Factorial {
              static class FactorialTask extends RecursiveTask<BigInteger> {
                private final int from, to;
                FactorialTask(int from, int to) { this.from = from; this.to = to; }
                protected BigInteger compute() {
                  int range = to - from;
                  if (range == 0) {                       // base case
                    return BigInteger.valueOf(from);
                  } else if (range == 1) {                // too small to parallelize
                    return BigInteger.valueOf(from).multiply(BigInteger.valueOf(to));
                  } else {                                // split in half
                    int mid = from + range / 2;
                    FactorialTask leftTask = new FactorialTask(from, mid);
                    leftTask.fork();         // perform about half the work locally
                    return new FactorialTask(mid + 1, to).compute()
                           .multiply(leftTask.join());
                  }
                }
              }
              static BigInteger factorial(int n) { // uses ForkJoinPool.commonPool()
                return (n <= 1) ? BigInteger.ONE : new FactorialTask(1, n).invoke();
              }
              public static void main(String[] args) {
                System.out.println(factorial(Integer.parseInt(args[0])));
              }
            }}

在 1.7 版本中加入。

java.util.concurrent.RecursiveTaskJava 檔。

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

建構函式

名稱 Description
RecursiveTask()

子職業呼叫的建構子。

RecursiveTask(IntPtr, JniHandleOwnership)

用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Exception

回傳基礎計算拋出的例外,若被取消則CancellationException回傳異常,若無例外則回傳 a,若方法尚未完成則為 anull

(繼承來源 ForkJoinTask)
ForkJoinTaskTag

會回傳此任務的標籤。

(繼承來源 ForkJoinTask)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
IsCancelled

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

(繼承來源 ForkJoinTask)
IsCompletedAbnormally

如果此任務拋出例外或被取消,則會回傳 true

(繼承來源 ForkJoinTask)
IsCompletedNormally

如果該任務完成且未拋出例外且未被取消,則會回傳 true

(繼承來源 ForkJoinTask)
IsDone

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

(繼承來源 ForkJoinTask)
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
JniPeerMembers

一個遞迴結果 ForkJoinTask

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
RawRawResult

回傳由 回 Join()傳的結果,即使該任務異常完成,或 null 未知任務已完成。

(繼承來源 ForkJoinTask)
ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

方法

名稱 Description
Cancel(Boolean)

試圖取消執行此任務。

(繼承來源 ForkJoinTask)
Clone()

建立並回傳此物件的副本。

(繼承來源 Object)
CompareAndSetForkJoinTaskTag(Int16, Int16)

原子條件設定此任務的標籤值。

(繼承來源 ForkJoinTask)
Complete(Object)

完成此任務,若尚未中止或取消,則回傳給定值,作為後續呼叫 join 及相關操作的結果。

(繼承來源 ForkJoinTask)
CompleteExceptionally(Throwable)

會異常完成此任務,若未中止或取消,則會對相關操作拋出該異常 join

(繼承來源 ForkJoinTask)
Compute()

此任務主要執行計算。

Construct(JniObjectReference, JniObjectReferenceOptions)

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
Equals(Object)

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
ExceptionNow()

一個遞迴結果 ForkJoinTask

(繼承來源 ForkJoinTask)
Exec()

實作遞迴任務的執行慣例。

Fork()

安排在目前任務正在執行的池中非同步執行此任務(若適用),若不適用ForkJoinPool#commonPool()則使用 #inForkJoinPool

(繼承來源 ForkJoinTask)
Get()

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

(繼承來源 ForkJoinTask)
Get(Int64, TimeUnit)

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

(繼承來源 ForkJoinTask)
GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
Invoke()

開始執行此任務,必要時等待完成,並回傳結果,或拋出(未檢查) RuntimeExceptionError 若底層計算已完成。

(繼承來源 ForkJoinTask)
JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
Join()

計算 #isDone 完成後回傳結果。

(繼承來源 ForkJoinTask)
Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
QuietlyComplete()

通常會完成此任務,且不設定值。

(繼承來源 ForkJoinTask)
QuietlyInvoke()

開始執行此任務,必要時等待完成,且不返回結果或拋棄例外。

(繼承來源 ForkJoinTask)
QuietlyJoin()

加入此任務,且不返回結果或拋棄例外。

(繼承來源 ForkJoinTask)
QuietlyJoin(Int64, TimeUnit)

嘗試加入此任務,若在逾時前完成(可能異常)且當前執行緒未被中斷,則回傳 true。

(繼承來源 ForkJoinTask)
QuietlyJoinUninterruptibly(Int64, TimeUnit)

嘗試加入此任務,若在給定的超時前完成(可能異常完成),則返回為真。

(繼承來源 ForkJoinTask)
Reinitialize()

重置此任務的內部記帳狀態,允許後續 fork的 。

(繼承來源 ForkJoinTask)
ResultNow()

一個遞迴結果 ForkJoinTask

(繼承來源 ForkJoinTask)
SetForkJoinTaskTag(Int16)

原子式設定此任務的標籤值並回傳舊值。

(繼承來源 ForkJoinTask)
SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
SetRawResult(Object)

強制回傳給定值。

(繼承來源 ForkJoinTask)
State()

一個遞迴結果 ForkJoinTask

(繼承來源 ForkJoinTask)
ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
TryUnfork()

嘗試取消排程執行此任務。

(繼承來源 ForkJoinTask)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

(繼承來源 Object)
Wait(Int64, Int32)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

一個遞迴結果 ForkJoinTask

(繼承來源 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

一個遞迴結果 ForkJoinTask

(繼承來源 ForkJoinTask)

擴充方法

名稱 Description
GetAsync(IFuture, Int64, TimeUnit)

一個遞迴結果 ForkJoinTask

GetAsync(IFuture)

一個遞迴結果 ForkJoinTask

GetJniTypeName(IJavaPeerable)

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

JavaAs<TResult>(IJavaPeerable)

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

一個遞迴結果 ForkJoinTask

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

適用於