IExecutorService Interface
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Qui Executor fournit des méthodes pour gérer l’arrêt et les méthodes qui peuvent produire un Future pour le suivi de la progression d’une ou plusieurs tâches asynchrones.
[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
- Dérivé
- Attributs
- Implémente
Remarques
Qui Executor fournit des méthodes pour gérer l’arrêt et les méthodes qui peuvent produire un Future pour le suivi de la progression d’une ou plusieurs tâches asynchrones.
Une ExecutorService opération peut être arrêtée, ce qui l’entraîne à rejeter de nouvelles tâches. Deux méthodes différentes sont fournies pour arrêter un ExecutorService. La #shutdown méthode permet aux tâches précédemment envoyées d’être exécutées avant la fin, tandis que la #shutdownNow méthode empêche l’attente des tâches de démarrer et de tenter d’arrêter les tâches en cours d’exécution. À l’arrêt, un exécuteur n’a aucune tâche en cours d’exécution, aucune tâche en attente d’exécution et aucune nouvelle tâche ne peut être envoyée. Un usage inutilisé ExecutorService doit être arrêté pour autoriser la récupération de ses ressources.
La méthode submit étend la méthode Executor#execute(Runnable) de base en créant et en retournant un Future qui peut être utilisé pour annuler l’exécution et/ou attendre la fin. Les méthodes invokeAny et invokeAll effectuent les formes les plus fréquemment utiles d’exécution en bloc, l’exécution d’une collection de tâches, puis l’attente d’au moins un, ou tout, pour se terminer. (La classe ExecutorCompletionService peut être utilisée pour écrire des variantes personnalisées de ces méthodes.)
La Executors classe fournit des méthodes de fabrique pour les services d’exécuteur fournis dans ce package.
<Exemples< d’utilisation h2>/h2>
Voici un croquis d’un service réseau dans lequel les threads d’un service de pool de threads sont des requêtes entrantes. Il utilise la méthode de fabrique préconfigurée 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
}
}}
Un ExecutorService peut également être établi et fermé (arrêt, blocage jusqu’à l’arrêt) comme suit ; illustrant une autre Executors méthode d’usine :
{@code
try (ExecutorService e = Executors.newWorkStealingPool()) {
// submit or execute many tasks with e ...
}}
Une personnalisation supplémentaire est également possible. Par exemple, la méthode suivante arrête une ExecutorService phase en deux phases, tout d’abord en appelant shutdown pour rejeter les tâches entrantes, puis en appelant shutdownNow, si nécessaire, pour annuler les tâches persistantes :
{@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();
}
}}
Effets de cohérence de la mémoire : actions dans un thread avant la soumission d’une ou Callable d’une Runnable tâche à un ExecutorService<i>happen-before</i> toutes les actions effectuées par cette tâche, qui à son tour se produisent avant que le résultat soit récupéré via Future.get().
Ajouté à la version 1.5.
Java documentation pour java.util.concurrent.ExecutorService.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.
Propriétés
| Nom | Description |
|---|---|
| Handle |
Obtient la valeur JNI de l’objet Android sous-jacent. (Hérité de IJavaObject) |
| IsShutdown |
Retourne |
| IsTerminated |
Retourne |
| JniIdentityHashCode |
Retourne la valeur de |
| JniManagedPeerState |
État de l’homologue managé. (Hérité de IJavaPeerable) |
| JniObjectReferenceControlBlock |
Qui |
| JniPeerMembers |
Prise en charge de l’accès aux membres et de l’appel. (Hérité de IJavaPeerable) |
| PeerReference |
Retourne une JniObjectReference instance d’objet Java encapsulée. (Hérité de IJavaPeerable) |
Méthodes
| Nom | Description |
|---|---|
| AwaitTermination(Int64, TimeUnit) |
Bloque jusqu’à ce que toutes les tâches aient terminé l’exécution après une demande d’arrêt, ou que le délai d’attente se produise, ou que le thread actuel soit interrompu, selon ce qui se produit en premier. |
| Close() |
Lance un arrêt ordonné dans lequel les tâches précédemment soumises sont exécutées, mais aucune nouvelle tâche n’est acceptée. |
| Disposed() |
Appelé lorsque l’instance a été supprimée. (Hérité de IJavaPeerable) |
| DisposeUnlessReferenced() |
S’il n’existe aucune référence en suspens à cette instance, les appels |
| Execute(IRunnable) |
Exécute la commande donnée à un moment donné à l’avenir. (Hérité de IExecutor) |
| Finalized() |
Appelé lorsque l’instance a été finalisée. (Hérité de IJavaPeerable) |
| InvokeAll(ICollection, Int64, TimeUnit) |
Exécute les tâches données, en retournant une liste d’futures contenant leur état et leurs résultats lorsque tout est terminé ou que le délai d’expiration expire, selon ce qui se produit en premier. |
| InvokeAll(ICollection) |
Exécute les tâches données, en retournant une liste d’futures contenant leur état et leurs résultats une fois toutes les tâches terminées. |
| InvokeAny(ICollection, Int64, TimeUnit) |
Exécute les tâches données, en retournant le résultat d’une tâche terminée avec succès (i. |
| InvokeAny(ICollection) |
Exécute les tâches données, en retournant le résultat d’une tâche terminée avec succès (i. |
| SetJniIdentityHashCode(Int32) |
Définissez la valeur retournée par |
| SetJniManagedPeerState(JniManagedPeerStates) |
Qui |
| SetPeerReference(JniObjectReference) |
Définissez la valeur retournée par |
| Shutdown() |
Lance un arrêt ordonné dans lequel les tâches précédemment soumises sont exécutées, mais aucune nouvelle tâche n’est acceptée. |
| ShutdownNow() |
Tente d’arrêter toutes les tâches en cours d’exécution active, arrête le traitement des tâches en attente et retourne une liste des tâches qui attendaient l’exécution. |
| Submit(ICallable) |
Envoie une tâche de retour de valeur pour l’exécution et retourne un futur représentant les résultats en attente de la tâche. |
| Submit(IRunnable, Object) |
Envoie une tâche exécutable pour l’exécution et retourne un futur représentant cette tâche. |
| Submit(IRunnable) |
Envoie une tâche exécutable pour l’exécution et retourne un futur représentant cette tâche. |
| UnregisterFromRuntime() |
Annulez l’inscription de cette instance afin que le runtime ne le retourne pas à partir d’appels futurs Java.Interop.JniRuntime+JniValueManager.PeekValue . (Hérité de IJavaPeerable) |
Méthodes d’extension
| Nom | Description |
|---|---|
| AwaitTerminationAsync(IExecutorService, Int64, TimeUnit) |
Qui |
| GetJniTypeName(IJavaPeerable) |
Obtient le nom JNI du type de l’instance |
| InvokeAnyAsync(IExecutorService, ICollection, Int64, TimeUnit) |
Qui |
| InvokeAnyAsync(IExecutorService, ICollection) |
Qui |
| JavaAs<TResult>(IJavaPeerable) |
Essayez de forcer |
| JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
| JavaCast<TResult>(IJavaObject) |
Qui |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Essayez de forcer |