IExecutorService Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 ExecutorService
oggetto . 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
<ExecutorService
si verificano prima/Callable
i>> 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 |
IsTerminated |
Restituisce |
JniIdentityHashCode |
Restituisce il valore di per |
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 |
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 |
SetJniManagedPeerState(JniManagedPeerStates) |
Oggetto |
SetPeerReference(JniObjectReference) |
Impostare il valore restituito da |
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 |
GetJniTypeName(IJavaPeerable) |
Oggetto |
AwaitTerminationAsync(IExecutorService, Int64, TimeUnit) |
Oggetto |
InvokeAnyAsync(IExecutorService, ICollection) |
Oggetto |
InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit) |
Oggetto |