ExecutorCompletionService Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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 Result
y 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 |
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 |
Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
JniIdentityHashCode |
que |
JniPeerMembers |
que |
PeerReference |
que |
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 |
Dispose(Boolean) |
que |
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 |
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 |
PollAsync(Int64, TimeUnit) |
que |
SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
Submit(ICallable) |
que |
Submit(IRunnable, Object) |
que |
Take() |
Recupera y quita el futuro que representa la siguiente tarea completada, esperando si aún no hay ninguna presente. |
TakeAsync() |
que |
ToArray<T>() |
que |
ToString() |
Devuelve una representación de cadena del objeto. (Heredado de Object) |
UnregisterFromRuntime() |
que |
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 |
IJavaPeerable.DisposeUnlessReferenced() |
que |
IJavaPeerable.Finalized() |
que |
IJavaPeerable.JniManagedPeerState |
que |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
que |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
que |
IJavaPeerable.SetPeerReference(JniObjectReference) |
que |
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 |
GetJniTypeName(IJavaPeerable) |
que |