共用方式為


ExecutorCompletionService 類別

定義

CompletionService,使用 提供的 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.Interop.IJavaPeerable, 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,使用 提供的 Executor 來執行工作。 這個類別會安排提交的工作會在完成時放置於可使用 take存取的佇列上。 類別足夠輕量,在處理工作群組時適合暫時性使用。

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

假設您有一組特定問題的解決器,每個都會傳回某些類型的 Result值,而且想要同時執行它們,並在某些方法 use(Result r)中處理每個傳回非 Null 值的結果。 您可以將此撰寫為:

{@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);
              }
            }}

假設您想要改用一組工作的第一個非 Null 結果、忽略任何遇到例外狀況,並在第一個工作就緒時取消所有其他工作:

{@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 屬性授權中所述的詞彙使用。

建構函式

ExecutorCompletionService(IExecutor)

使用提供的執行程式來建立 ExecutorCompletionService,以便基底工作執行和 LinkedBlockingQueue 做為完成佇列。

ExecutorCompletionService(IExecutor, IBlockingQueue)

使用提供的執行程式建立 ExecutorCompletionService,以便執行基底工作,並將提供的佇列當做完成佇列。

ExecutorCompletionService(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

屬性

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Handle

基礎Android實例的句柄。

(繼承來源 Object)
JniIdentityHashCode

CompletionService,使用 提供的 Executor 來執行工作。

(繼承來源 Object)
JniPeerMembers

CompletionService,使用 提供的 Executor 來執行工作。

PeerReference

CompletionService,使用 提供的 Executor 來執行工作。

(繼承來源 Object)
ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

方法

Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
Dispose()

CompletionService,使用 提供的 Executor 來執行工作。

(繼承來源 Object)
Dispose(Boolean)

CompletionService,使用 提供的 Executor 來執行工作。

(繼承來源 Object)
Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
JavaFinalize()

當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。

(繼承來源 Object)
Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
Poll()

擷取並移除代表下一個已完成工作的 Future,如果沒有 null ,則為 。

Poll(Int64, TimeUnit)

擷取並移除代表下一個已完成工作的 Future,如果尚未存在,則視需要等候到指定的等候時間。

PollAsync()

CompletionService,使用 提供的 Executor 來執行工作。

PollAsync(Int64, TimeUnit)

CompletionService,使用 提供的 Executor 來執行工作。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
Submit(ICallable)

CompletionService,使用 提供的 Executor 來執行工作。

Submit(IRunnable, Object)

CompletionService,使用 提供的 Executor 來執行工作。

Take()

擷取並移除代表下一個已完成工作的 Future,如果尚未存在則等候。

TakeAsync()

CompletionService,使用 提供的 Executor 來執行工作。

ToArray<T>()

CompletionService,使用 提供的 Executor 來執行工作。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

CompletionService,使用 提供的 Executor 來執行工作。

(繼承來源 Object)
Wait()

讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<>

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

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

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)

明確介面實作

IJavaPeerable.Disposed()

CompletionService,使用 提供的 Executor 來執行工作。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

CompletionService,使用 提供的 Executor 來執行工作。

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

CompletionService,使用 提供的 Executor 來執行工作。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

CompletionService,使用 提供的 Executor 來執行工作。

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

CompletionService,使用 提供的 Executor 來執行工作。

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

CompletionService,使用 提供的 Executor 來執行工作。

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

CompletionService,使用 提供的 Executor 來執行工作。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

CompletionService,使用 提供的 Executor 來執行工作。

GetJniTypeName(IJavaPeerable)

CompletionService,使用 提供的 Executor 來執行工作。

適用於