ExecutorCompletionService 类

定义

使用提供的Executor用于执行任务的 ACompletionService

[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
属性
实现

注解

使用提供的Executor用于执行任务的 ACompletionService。 此类将安排提交的任务在完成后放置在可访问 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)

使用为基本任务执行提供的执行程序和 LinkedBlockingQueue 完成队列创建 ExecutorCompletionService。

ExecutorCompletionService(IExecutor, IBlockingQueue)

使用基础任务执行提供的执行程序以及提供的队列作为其完成队列创建 ExecutorCompletionService。

ExecutorCompletionService(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
JniPeerMembers

使用提供的Executor用于执行任务的 ACompletionService

PeerReference

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

方法

Clone()

创建并返回此对象的副本。

(继承自 Object)
Dispose()

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
Dispose(Boolean)

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
JavaFinalize()

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Poll()

检索并删除表示下一个已完成任务的未来,或者 null 不存在。

Poll(Int64, TimeUnit)

检索并删除表示下一个已完成任务的 Future,如有必要,等待到指定的等待时间(如果尚不存在)。

PollAsync()

使用提供的Executor用于执行任务的 ACompletionService

PollAsync(Int64, TimeUnit)

使用提供的Executor用于执行任务的 ACompletionService

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
Submit(ICallable)

使用提供的Executor用于执行任务的 ACompletionService

Submit(IRunnable, Object)

使用提供的Executor用于执行任务的 ACompletionService

Take()

检索并删除表示下一个已完成任务的 Future,等待是否尚不存在。

TakeAsync()

使用提供的Executor用于执行任务的 ACompletionService

ToArray<T>()

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em> 或 <em>interrupted</em>。<><

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted</em>>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
IJavaPeerable.Finalized()

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
IJavaPeerable.JniManagedPeerState

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

使用提供的Executor用于执行任务的 ACompletionService

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

使用提供的Executor用于执行任务的 ACompletionService

GetJniTypeName(IJavaPeerable)

使用提供的Executor用于执行任务的 ACompletionService

适用于