Condividi tramite


IExecutorService Interfaccia

Definizione

Oggetto Executor che fornisce metodi per gestire la terminazione e i metodi che possono produrre un Future oggetto per il rilevamento dello stato di avanzamento di una o più attività asincrone.

[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
Derivato
Attributi
Implementazioni

Commenti

Oggetto Executor che fornisce metodi per gestire la terminazione e i metodi che possono produrre un Future oggetto per il rilevamento dello stato di avanzamento di una o più attività asincrone.

Un ExecutorService oggetto può essere arrestato, che causerà il rifiuto di nuove attività. Vengono forniti due metodi diversi per arrestare un ExecutorServiceoggetto . Il #shutdown metodo consentirà l'esecuzione delle attività inviate in precedenza prima della terminazione, mentre il #shutdownNow metodo impedisce l'avvio delle attività in attesa e i tentativi di interrompere l'esecuzione delle attività attualmente in esecuzione. Al termine, un executor non ha attività in esecuzione attivamente, nessuna attività in attesa dell'esecuzione e non è possibile inviare nuove attività. Un oggetto inutilizzato ExecutorService deve essere arrestato per consentire il recupero delle risorse.

Il metodo submit estende il metodo Executor#execute(Runnable) di base creando e restituendo un Future oggetto che può essere usato per annullare l'esecuzione e/o attendere il completamento. Metodi invokeAny ed invokeAll eseguire le forme più comuni di esecuzione bulk, l'esecuzione di una raccolta di attività e quindi l'attesa di almeno uno o tutti, per completare. La classe ExecutorCompletionService può essere usata per scrivere varianti personalizzate di questi metodi.

La Executors classe fornisce metodi factory per i servizi executor forniti in questo pacchetto.

<esempi< di utilizzo h2/h2>>

Ecco uno schizzo di un servizio di rete in cui i thread in una richiesta in ingresso del servizio pool di thread. Usa il metodo factory preconfigurato 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
              }
            }}

Il metodo seguente arresta un ExecutorService oggetto in due fasi, prima shutdown chiamando per rifiutare le attività in ingresso e quindi chiamando shutdownNow, se necessario, per annullare eventuali attività persistenti:

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

Effetti di coerenza della memoria: azioni in un thread prima dell'invio di un'attività o a un'attività Runnable<ExecutorServicesi verificano prima/Callablei>> di eventuali azioni eseguite da tale attività, che a sua volta si verificano< prima che il risultato venga recuperato tramite .Future.get()

Aggiunto nella versione 1.5.

Documentazione Java per java.util.concurrent.ExecutorService.

Le parti di questa pagina sono modifiche in base al lavoro creato e condiviso dal Android Open Source e usato in base ai termini descritti nella .

Proprietà

Handle

Ottiene il valore JNI dell'oggetto Android sottostante.

(Ereditato da IJavaObject)
IsShutdown

Restituisce true se questo executor è stato arrestato.

IsTerminated

Restituisce true se tutte le attività sono state completate dopo l'arresto.

JniIdentityHashCode

Restituisce il valore di per java.lang.System.identityHashCode() l'istanza di wrapped.

(Ereditato da IJavaPeerable)
JniManagedPeerState

Stato del peer gestito.

(Ereditato da IJavaPeerable)
JniPeerMembers

Supporto per l'accesso ai membri e la chiamata.

(Ereditato da IJavaPeerable)
PeerReference

Restituisce un'istanza JniObjectReference dell'oggetto Java con wrapping.

(Ereditato da IJavaPeerable)

Metodi

AwaitTermination(Int64, TimeUnit)

Blocca fino a quando tutte le attività non sono state completate dopo una richiesta di arresto o il timeout o il thread corrente viene interrotto, tuttavia viene interrotto per primo.

Disposed()

Chiamato quando l'istanza è stata eliminata.

(Ereditato da IJavaPeerable)
DisposeUnlessReferenced()

Se non sono presenti riferimenti in sospeso a questa istanza, chiama Dispose(); in caso contrario, non fa nulla.

(Ereditato da IJavaPeerable)
Execute(IRunnable)

Esegue il comando specificato in qualche momento in futuro.

(Ereditato da IExecutor)
Finalized()

Chiamato quando l'istanza è stata finalizzata.

(Ereditato da IJavaPeerable)
InvokeAll(ICollection)

Esegue le attività indicate, restituendo un elenco di Futures che mantiene lo stato e i risultati al termine di tutti.

InvokeAll(ICollection, Int64, TimeUnit)

Esegue le attività indicate, restituendo un elenco di Futures che mantiene lo stato e i risultati al termine o al timeout scade prima di tutto.

InvokeAny(ICollection)

Esegue le attività indicate, restituendo il risultato di una che ha completato correttamente (i.

InvokeAny(ICollection, Int64, TimeUnit)

Esegue le attività indicate, restituendo il risultato di una che ha completato correttamente (i.

SetJniIdentityHashCode(Int32)

Impostare il valore restituito da JniIdentityHashCode.

(Ereditato da IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Oggetto Executor che fornisce metodi per gestire la terminazione e i metodi che possono produrre un Future oggetto per il rilevamento dello stato di avanzamento di una o più attività asincrone.

(Ereditato da IJavaPeerable)
SetPeerReference(JniObjectReference)

Impostare il valore restituito da PeerReference.

(Ereditato da IJavaPeerable)
Shutdown()

Avvia un arresto ordinato in cui vengono eseguite le attività inviate in precedenza, ma non verranno accettate nuove attività.

ShutdownNow()

Tenta di arrestare tutte le attività in esecuzione attivamente, arresta l'elaborazione delle attività in attesa e restituisce un elenco delle attività in attesa dell'esecuzione.

Submit(ICallable)

Invia un'attività di restituzione del valore per l'esecuzione e restituisce un futuro che rappresenta i risultati in sospeso dell'attività.

Submit(IRunnable)

Invia un'attività Runnable per l'esecuzione e restituisce un futuro che rappresenta tale attività.

Submit(IRunnable, Object)

Invia un'attività Runnable per l'esecuzione e restituisce un futuro che rappresenta tale attività.

UnregisterFromRuntime()

Annullare la registrazione di questa istanza in modo che il runtime non lo restituirà dalle chiamate future Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Ereditato da IJavaPeerable)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione dei tipi controllati dal runtime Android.

JavaCast<TResult>(IJavaObject)

Oggetto Executor che fornisce metodi per gestire la terminazione e i metodi che possono produrre un Future oggetto per il rilevamento dello stato di avanzamento di una o più attività asincrone.

GetJniTypeName(IJavaPeerable)

Oggetto Executor che fornisce metodi per gestire la terminazione e i metodi che possono produrre un Future oggetto per il rilevamento dello stato di avanzamento di una o più attività asincrone.

AwaitTerminationAsync(IExecutorService, Int64, TimeUnit)

Oggetto Executor che fornisce metodi per gestire la terminazione e i metodi che possono produrre un Future oggetto per il rilevamento dello stato di avanzamento di una o più attività asincrone.

InvokeAnyAsync(IExecutorService, ICollection)

Oggetto Executor che fornisce metodi per gestire la terminazione e i metodi che possono produrre un Future oggetto per il rilevamento dello stato di avanzamento di una o più attività asincrone.

InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit)

Oggetto Executor che fornisce metodi per gestire la terminazione e i metodi che possono produrre un Future oggetto per il rilevamento dello stato di avanzamento di una o più attività asincrone.

Si applica a