Compartir a través de


ExecutorCompletionService Clase

Definición

que CompletionService usa un proporcionado Executor para ejecutar tareas.

[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
Herencia
ExecutorCompletionService
Atributos
Implementaciones

Comentarios

que CompletionService usa un proporcionado Executor para ejecutar tareas. Esta clase organiza que las tareas enviadas son, tras la finalización, colocadas en una cola accesible mediante take. La clase es lo suficientemente ligera como para ser adecuada para su uso transitorio al procesar grupos de tareas.

<b>Ejemplos de uso.</b>

Supongamos que tiene un conjunto de solucionadores para un determinado problema, cada uno de los cuales devuelve un valor de algún tipo Resulty desea ejecutarlos simultáneamente, procesando los resultados de cada uno de ellos que devuelven un valor distinto de NULL, en algún método use(Result r). Puede escribir esto como:

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

Supongamos que, en su lugar, desea usar el primer resultado distinto de NULL del conjunto de tareas, omitir cualquier que encuentre excepciones y cancelar todas las demás tareas cuando la primera esté lista:

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

Agregado en 1.5.

Documentación de Java para java.util.concurrent.ExecutorCompletionService.

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.

Constructores

ExecutorCompletionService(IExecutor)

Crea un ExecutorCompletionService mediante el ejecutor proporcionado para la ejecución de tareas base y como LinkedBlockingQueue una cola de finalización.

ExecutorCompletionService(IExecutor, IBlockingQueue)

Crea un executorCompletionService mediante el ejecutor proporcionado para la ejecución de tareas base y la cola proporcionada como cola de finalización.

ExecutorCompletionService(IntPtr, JniHandleOwnership)

Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución.

Propiedades

Class

Devuelve la clase en tiempo de ejecución de este Objectobjeto .

(Heredado de Object)
Handle

Identificador de la instancia de Android subyacente.

(Heredado de Object)
JniIdentityHashCode

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
JniPeerMembers

que CompletionService usa un proporcionado Executor para ejecutar tareas.

PeerReference

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
ThresholdClass

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

ThresholdType

Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código.

Métodos

Clone()

Crea y devuelve una copia de este objeto.

(Heredado de Object)
Dispose()

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
Dispose(Boolean)

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
Equals(Object)

Indica si algún otro objeto es "igual a" este.

(Heredado de Object)
GetHashCode()

Devuelve un valor de código hash del objeto.

(Heredado de Object)
JavaFinalize()

Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto .

(Heredado de Object)
Notify()

Activa un único subproceso que está esperando en el monitor de este objeto.

(Heredado de Object)
NotifyAll()

Activa todos los subprocesos que están esperando en el monitor de este objeto.

(Heredado de Object)
Poll()

Recupera y quita el futuro que representa la siguiente tarea completada, o null si no hay ninguna presente.

Poll(Int64, TimeUnit)

Recupera y quita el futuro que representa la siguiente tarea completada, esperando si es necesario hasta el tiempo de espera especificado si aún no hay ninguno presente.

PollAsync()

que CompletionService usa un proporcionado Executor para ejecutar tareas.

PollAsync(Int64, TimeUnit)

que CompletionService usa un proporcionado Executor para ejecutar tareas.

SetHandle(IntPtr, JniHandleOwnership)

Establece la propiedad Handle.

(Heredado de Object)
Submit(ICallable)

que CompletionService usa un proporcionado Executor para ejecutar tareas.

Submit(IRunnable, Object)

que CompletionService usa un proporcionado Executor para ejecutar tareas.

Take()

Recupera y quita el futuro que representa la siguiente tarea completada, esperando si aún no hay ninguna presente.

TakeAsync()

que CompletionService usa un proporcionado Executor para ejecutar tareas.

ToArray<T>()

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
ToString()

Devuelve una representación de cadena del objeto.

(Heredado de Object)
UnregisterFromRuntime()

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
Wait()

Hace que el subproceso actual espere hasta que se despierta, normalmente por ser em notificado/em> o <em>interrumpido</em>.<><

(Heredado de Object)
Wait(Int64)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)
Wait(Int64, Int32)

Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real.

(Heredado de Object)

Implementaciones de interfaz explícitas

IJavaPeerable.Disposed()

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
IJavaPeerable.DisposeUnlessReferenced()

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
IJavaPeerable.Finalized()

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
IJavaPeerable.JniManagedPeerState

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

que CompletionService usa un proporcionado Executor para ejecutar tareas.

(Heredado de Object)

Métodos de extensión

JavaCast<TResult>(IJavaObject)

Realiza una conversión de tipos comprobados en tiempo de ejecución de Android.

JavaCast<TResult>(IJavaObject)

que CompletionService usa un proporcionado Executor para ejecutar tareas.

GetJniTypeName(IJavaPeerable)

que CompletionService usa un proporcionado Executor para ejecutar tareas.

Se aplica a