語言

ExecutorCompletionService 類別

定義

CompletionService A 使用 sserved Executor 來執行任務。

[Android.Runtime.Register("java/util/concurrent/ExecutorCompletionService", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public class ExecutorCompletionService : Java.Lang.Object, IDisposable, Java.Util.Concurrent.ICompletionService
[<Android.Runtime.Register("java/util/concurrent/ExecutorCompletionService", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type ExecutorCompletionService = class
    inherit Object
    interface ICompletionService
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
繼承
ExecutorCompletionService
屬性
實作

備註

CompletionService A 使用 sserved Executor 來執行任務。 此類別安排提交的任務完成後,會被放入可用 take存取的佇列中。 此類別輕量級,適合在處理任務群組時短暫使用。

<b>使用範例。</b>

假設你有一組解決某問題的求解器,每個返回某個類型的 Result值,並希望同時執行它們,處理每個返回非空值的結果,採用某個方法 use(Result r)。 你可以這樣寫:

{@code
            void solve(Executor e,
                       Collection<Callable<Result>> solvers)
                throws InterruptedException, ExecutionException {
              CompletionService<Result> cs
                  = new ExecutorCompletionService<>(e);
              solvers.forEach(cs::submit);
              for (int i = solvers.size(); i > 0; i--) {
                Result r = cs.take().get();
                if (r != null)
                  use(r);
              }
            }}

假設你想使用任務集合中第一個非空結果,忽略遇到異常的結果,並在第一個任務準備好時取消所有其他任務:

{@code
            void solve(Executor e,
                       Collection<Callable<Result>> solvers)
                throws InterruptedException {
              CompletionService<Result> cs
                  = new ExecutorCompletionService<>(e);
              int n = solvers.size();
              List<Future<Result>> futures = new ArrayList<>(n);
              Result result = null;
              try {
                solvers.forEach(solver -> futures.add(cs.submit(solver)));
                for (int i = n; i > 0; i--) {
                  try {
                    Result r = cs.take().get();
                    if (r != null) {
                      result = r;
                      break;
                    }
                  } catch (ExecutionException ignore) {}
                }
              } finally {
                futures.forEach(future -> future.cancel(true));
              }

              if (result != null)
                use(result);
            }}

已在1.5中新增。

java.util.concurrent.ExecutorCompletionServiceJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

建構函式

名稱 Description
ExecutorCompletionService(IExecutor, IBlockingQueue)

以所提供的執行器作為基礎任務執行,並以所提供的佇列作為完成佇列,建立一個 ExecutorCompletionService。

ExecutorCompletionService(IExecutor)

利用提供的執行器建立一個執行完成服務(ExecutorCompletionService)用於基礎任務執行,並 LinkedBlockingQueue 作為完成佇列。

ExecutorCompletionService(IntPtr, JniHandleOwnership)

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

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
JniIdentityHashCode

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

(繼承來源 Object)
JniManagedPeerState

CompletionService A 使用 sserved Executor 來執行任務。

(繼承來源 JavaObject)
JniPeerMembers

CompletionService A 使用 sserved Executor 來執行任務。

PeerReference

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

(繼承來源 Object)
ThresholdClass

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

ThresholdType

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

方法

名稱 Description
Clone()

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

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

CompletionService A 使用 sserved Executor 來執行任務。

(繼承來源 JavaObject)
Dispose()

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

(繼承來源 Object)
Dispose(Boolean)

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

(繼承來源 Object)
DisposeUnlessReferenced()

CompletionService A 使用 sserved Executor 來執行任務。

(繼承來源 JavaObject)
Equals(Object)

CompletionService A 使用 sserved Executor 來執行任務。

(繼承來源 JavaObject)
Equals(Object)

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

(繼承來源 Object)
GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
JavaFinalize()

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

(繼承來源 Object)
Notify()

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

(繼承來源 Object)
NotifyAll()

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

(繼承來源 Object)
Poll()

取回並移除代表下一個完成任務的未來,或 null 若不存在任務。

Poll(Int64, TimeUnit)

擷取並移除代表下一個完成任務的未來,若尚未完成,則等待至指定等待時間。

PollAsync()

CompletionService A 使用 sserved Executor 來執行任務。

PollAsync(Int64, TimeUnit)

CompletionService A 使用 sserved Executor 來執行任務。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

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

CompletionService A 使用 sserved Executor 來執行任務。

(繼承來源 JavaObject)
Submit(ICallable)

CompletionService A 使用 sserved Executor 來執行任務。

Submit(IRunnable, Object)

CompletionService A 使用 sserved Executor 來執行任務。

Take()

取回並移除代表下一個完成任務的未來,若尚未完成任務,則等待。

TakeAsync()

CompletionService A 使用 sserved Executor 來執行任務。

ToArray<T>()

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

(繼承來源 Object)
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)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

CompletionService A 使用 sserved Executor 來執行任務。

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

CompletionService A 使用 sserved Executor 來執行任務。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

CompletionService A 使用 sserved Executor 來執行任務。

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

CompletionService A 使用 sserved Executor 來執行任務。

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

CompletionService A 使用 sserved Executor 來執行任務。

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

CompletionService A 使用 sserved Executor 來執行任務。

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

CompletionService A 使用 sserved Executor 來執行任務。

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

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

JavaAs<TResult>(IJavaPeerable)

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

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

CompletionService A 使用 sserved Executor 來執行任務。

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

適用於