ExecutorCompletionService Classe
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 CompletionService
utilise un élément fourni Executor
pour exécuter des tâches.
[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
- Héritage
- Attributs
- Implémente
Remarques
Qui CompletionService
utilise un élément fourni Executor
pour exécuter des tâches. Cette classe organise les tâches envoyées, une fois terminées, placées sur une file d’attente accessible à l’aide take
de . La classe est suffisamment légère pour être adaptée à une utilisation temporaire lors du traitement de groupes de tâches.
<b>Exemples d’utilisation.</b>
Supposons que vous disposez d’un ensemble de résolveurs pour un certain problème, chacun retournant une valeur d’un certain type Result
et souhaitez les exécuter simultanément, en traitant les résultats de chacun d’entre eux qui retournent une valeur non null, dans une certaine méthode use(Result r)
. Vous pouvez écrire ceci comme suit :
{@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);
}
}}
Supposons plutôt que vous souhaitiez utiliser le premier résultat non null de l’ensemble de tâches, en ignorant les exceptions rencontrées et en annulant toutes les autres tâches lorsque la première est prête :
{@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);
}}
Ajouté à la version 1.5.
Documentation Java pour java.util.concurrent.ExecutorCompletionService
.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.
Constructeurs
ExecutorCompletionService(IExecutor) |
Crée un ExecutorCompletionService à l’aide de l’exécuteur fourni pour l’exécution de tâche de base et une |
ExecutorCompletionService(IExecutor, IBlockingQueue) |
Crée un ExecutorCompletionService à l’aide de l’exécuteur fourni pour l’exécution de tâche de base et la file d’attente fournie comme file d’attente d’achèvement. |
ExecutorCompletionService(IntPtr, JniHandleOwnership) |
Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime. |
Propriétés
Class |
Retourne la classe runtime de ce |
Handle |
Handle de l’instance Android sous-jacente. (Hérité de Object) |
JniIdentityHashCode |
Qui |
JniPeerMembers |
Qui |
PeerReference |
Qui |
ThresholdClass |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. |
ThresholdType |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. |
Méthodes
Clone() |
Crée et retourne une copie de cet objet. (Hérité de Object) |
Dispose() |
Qui |
Dispose(Boolean) |
Qui |
Equals(Object) |
Indique si un autre objet est « égal à » celui-ci. (Hérité de Object) |
GetHashCode() |
Retourne une valeur de code de hachage pour l'objet. (Hérité de Object) |
JavaFinalize() |
Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet. (Hérité de Object) |
Notify() |
Réveille un thread unique qui attend le moniteur de cet objet. (Hérité de Object) |
NotifyAll() |
Réveille tous les threads qui attendent le moniteur de cet objet. (Hérité de Object) |
Poll() |
Récupère et supprime l’avenir représentant la tâche terminée suivante, ou |
Poll(Int64, TimeUnit) |
Récupère et supprime l’avenir représentant la tâche terminée suivante, en attendant si nécessaire jusqu’au délai d’attente spécifié si aucun n’est encore présent. |
PollAsync() |
Qui |
PollAsync(Int64, TimeUnit) |
Qui |
SetHandle(IntPtr, JniHandleOwnership) |
Définit la propriété Handle. (Hérité de Object) |
Submit(ICallable) |
Qui |
Submit(IRunnable, Object) |
Qui |
Take() |
Récupère et supprime l’avenir représentant la tâche terminée suivante, en attente si aucun n’est encore présent. |
TakeAsync() |
Qui |
ToArray<T>() |
Qui |
ToString() |
Retourne une représentation de chaîne de l'objet. (Hérité de Object) |
UnregisterFromRuntime() |
Qui |
Wait() |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<> (Hérité de Object) |
Wait(Int64) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Wait(Int64, Int32) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Implémentations d’interfaces explicites
IJavaPeerable.Disposed() |
Qui |
IJavaPeerable.DisposeUnlessReferenced() |
Qui |
IJavaPeerable.Finalized() |
Qui |
IJavaPeerable.JniManagedPeerState |
Qui |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Qui |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Qui |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Qui |
Méthodes d’extension
JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
JavaCast<TResult>(IJavaObject) |
Qui |
GetJniTypeName(IJavaPeerable) |
Qui |