IExecutorService Interfaz
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 Executor proporciona métodos para administrar la terminación y los métodos que pueden generar un para realizar un Future seguimiento del progreso de una o varias tareas asincrónicas.
[Android.Runtime.Register("java/util/concurrent/ExecutorService", "", "Java.Util.Concurrent.IExecutorServiceInvoker")]
public interface IExecutorService : IDisposable, Java.Interop.IJavaPeerable, Java.Util.Concurrent.IExecutor
[<Android.Runtime.Register("java/util/concurrent/ExecutorService", "", "Java.Util.Concurrent.IExecutorServiceInvoker")>]
type IExecutorService = interface
interface IExecutor
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Derivado
- Atributos
- Implementaciones
Comentarios
que Executor proporciona métodos para administrar la terminación y los métodos que pueden generar un para realizar un Future seguimiento del progreso de una o varias tareas asincrónicas.
Se ExecutorService puede apagar , lo que hará que rechace las nuevas tareas. Se proporcionan dos métodos diferentes para apagar un ExecutorService. El #shutdown método permitirá que las tareas enviadas anteriormente se ejecuten antes de finalizar, mientras que el #shutdownNow método impide que las tareas en espera se inicien e intenten detener la ejecución de tareas actualmente. Después de la finalización, un ejecutor no tiene tareas que se ejecuten activamente, ninguna tarea en espera de ejecución y no se puede enviar ninguna tarea nueva. Se debe apagar un no utilizados ExecutorService para permitir la recuperación de sus recursos.
El método submit amplía el método Executor#execute(Runnable) base mediante la creación y devolución de un Future objeto que se puede usar para cancelar la ejecución o esperar a que finalice. Los métodos invokeAny y invokeAll realizan las formas más útiles de ejecución masiva, ejecutando una colección de tareas y esperando al menos una o todas para completarse. (La clase ExecutorCompletionService se puede usar para escribir variantes personalizadas de estos métodos).
La Executors clase proporciona métodos de fábrica para los servicios executor proporcionados en este paquete.
<h2>Ejemplos< de uso/h2>
Este es un boceto de un servicio de red en el que los subprocesos de un grupo de subprocesos atenderán las solicitudes entrantes. Usa el método de fábrica preconfigurado Executors#newFixedThreadPool :
{@code
class NetworkService implements Runnable {
private final ServerSocket serverSocket;
private final ExecutorService pool;
public NetworkService(int port, int poolSize)
throws IOException {
serverSocket = new ServerSocket(port);
pool = Executors.newFixedThreadPool(poolSize);
}
public void run() { // run the service
try {
for (;;) {
pool.execute(new Handler(serverSocket.accept()));
}
} catch (IOException ex) {
pool.shutdown();
}
}
}
class Handler implements Runnable {
private final Socket socket;
Handler(Socket socket) { this.socket = socket; }
public void run() {
// read and service request on socket
}
}}
ExecutorService También se puede establecer y cerrar (apagar, bloquear hasta finalizar) como se indica a continuación; ilustrando con un método de fábrica diferenteExecutors:
{@code
try (ExecutorService e = Executors.newWorkStealingPool()) {
// submit or execute many tasks with e ...
}}
También es posible personalizar aún más. Por ejemplo, el método siguiente cierra una ExecutorService en dos fases, primero llamando shutdown a para rechazar las tareas entrantes y, a continuación, llamando shutdownNowa , si es necesario, para cancelar las tareas persistentes:
{@code
void shutdownAndAwaitTermination(ExecutorService pool) {
pool.shutdown(); // Disable new tasks from being submitted
try {
// Wait a while for existing tasks to terminate
if (!pool.awaitTermination(60, TimeUnit.SECONDS)) {
pool.shutdownNow(); // Cancel currently executing tasks
// Wait a while for tasks to respond to being cancelled
if (!pool.awaitTermination(60, TimeUnit.SECONDS))
System.err.println("Pool did not terminate");
}
} catch (InterruptedException ex) {
// (Re-)Cancel if current thread also interrupted
pool.shutdownNow();
// Preserve interrupt status
Thread.currentThread().interrupt();
}
}}
Efectos de coherencia de memoria: las acciones de un subproceso antes del envío de una tarea o Callable a una<ExecutorServiceRunnable tarea i>suceden antes< o i> de las acciones realizadas por esa tarea, que a su vez se producen antes de que el resultado se recupere a través Future.get()de .
Agregado en 1.5.
Java documentación para java.util.concurrent.ExecutorService.
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.
Propiedades
| Nombre | Description |
|---|---|
| Handle |
Obtiene el valor JNI del objeto Android subyacente. (Heredado de IJavaObject) |
| IsShutdown |
Devuelve |
| IsTerminated |
Devuelve |
| JniIdentityHashCode |
Devuelve el valor de |
| JniManagedPeerState |
Estado del mismo nivel administrado. (Heredado de IJavaPeerable) |
| JniPeerMembers |
Compatibilidad con la invocación y el acceso de miembros. (Heredado de IJavaPeerable) |
| PeerReference |
Devuelve un JniObjectReference de la instancia de objeto Java ajustada. (Heredado de IJavaPeerable) |
Métodos
| Nombre | Description |
|---|---|
| AwaitTermination(Int64, TimeUnit) |
Bloquea hasta que todas las tareas se hayan completado la ejecución después de una solicitud de cierre, o el tiempo de espera se produzca o se interrumpa el subproceso actual, lo que ocurra primero. |
| Close() |
Inicia un apagado ordenado en el que se ejecutan las tareas enviadas anteriormente, pero no se aceptarán nuevas tareas. |
| Disposed() |
Se llama cuando se ha eliminado la instancia. (Heredado de IJavaPeerable) |
| DisposeUnlessReferenced() |
Si no hay referencias pendientes a esta instancia, llama a |
| Execute(IRunnable) |
Ejecuta el comando especificado en algún momento en el futuro. (Heredado de IExecutor) |
| Finalized() |
Se llama cuando se ha finalizado la instancia. (Heredado de IJavaPeerable) |
| InvokeAll(ICollection, Int64, TimeUnit) |
Ejecuta las tareas especificadas, devolviendo una lista de Futuros que contiene su estado y resultados cuando expira todo el tiempo de espera o completo, lo que ocurra primero. |
| InvokeAll(ICollection) |
Ejecuta las tareas especificadas y devuelve una lista de Futuros que contienen su estado y resultados cuando se completan todos. |
| InvokeAny(ICollection, Int64, TimeUnit) |
Ejecuta las tareas dadas y devuelve el resultado de uno que se ha completado correctamente (i. |
| InvokeAny(ICollection) |
Ejecuta las tareas dadas y devuelve el resultado de uno que se ha completado correctamente (i. |
| SetJniIdentityHashCode(Int32) |
Establezca el valor devuelto por |
| SetJniManagedPeerState(JniManagedPeerStates) |
que |
| SetPeerReference(JniObjectReference) |
Establezca el valor devuelto por |
| Shutdown() |
Inicia un apagado ordenado en el que se ejecutan las tareas enviadas anteriormente, pero no se aceptarán nuevas tareas. |
| ShutdownNow() |
Intenta detener todas las tareas que se ejecutan activamente, detiene el procesamiento de tareas en espera y devuelve una lista de las tareas que estaban esperando la ejecución. |
| Submit(ICallable) |
Envía una tarea de devolución de valor para su ejecución y devuelve un valor Future que representa los resultados pendientes de la tarea. |
| Submit(IRunnable, Object) |
Envía una tarea runnable para su ejecución y devuelve un valor Future que representa esa tarea. |
| Submit(IRunnable) |
Envía una tarea runnable para su ejecución y devuelve un valor Future que representa esa tarea. |
| UnregisterFromRuntime() |
Anule el registro de esta instancia para que el entorno de ejecución no lo devuelva de invocaciones futuras Java.Interop.JniRuntime+JniValueManager.PeekValue . (Heredado de IJavaPeerable) |
Métodos de extensión
| Nombre | Description |
|---|---|
| AwaitTerminationAsync(IExecutorService, Int64, TimeUnit) |
que |
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit) |
que |
| InvokeAnyAsync(IExecutorService, ICollection) |
que |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
que |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |