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 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 |
| 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 |