Langage

IExecutor Interface

Définition

Objet qui exécute des tâches envoyées Runnable .

[Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")]
public interface IExecutor : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/Executor", "", "Java.Util.Concurrent.IExecutorInvoker")>]
type IExecutor = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Dérivé
Attributs
Implémente

Remarques

Objet qui exécute des tâches envoyées Runnable . Cette interface permet de découpler la soumission de tâches à partir de la mécanique de l’exécution de chaque tâche, y compris les détails de l’utilisation du thread, de la planification, etc. Il Executor est normalement utilisé au lieu de créer explicitement des threads. Par exemple, au lieu d’appeler new Thread(new RunnableTask()).start() chacun d’un ensemble de tâches, vous pouvez utiliser :

{@code
            Executor executor = anExecutor();
            executor.execute(new RunnableTask1());
            executor.execute(new RunnableTask2());
            ...}

Toutefois, l’interface ne nécessite pas strictement que l’exécution Executor soit asynchrone. Dans le cas le plus simple, un exécuteur peut exécuter la tâche envoyée immédiatement dans le thread de l’appelant :

{@code
            class DirectExecutor implements Executor {
              public void execute(Runnable r) {
                r.run();
              }
            }}

Plus généralement, les tâches sont exécutées dans un thread autre que le thread de l’appelant. L’exécuteur ci-dessous génère un nouveau thread pour chaque tâche.

{@code
            class ThreadPerTaskExecutor implements Executor {
              public void execute(Runnable r) {
                new Thread(r).start();
              }
            }}

De nombreuses Executor implémentations imposent une certaine limitation quant à la façon et au moment où les tâches sont planifiées. L’exécuteur ci-dessous sérialise la soumission de tâches à un deuxième exécuteur, illustrant un exécuteur composite.

{@code
            class SerialExecutor implements Executor {
              final Queue<Runnable> tasks = new ArrayDeque<>();
              final Executor executor;
              Runnable active;

              SerialExecutor(Executor executor) {
                this.executor = executor;
              }

              public synchronized void execute(Runnable r) {
                tasks.add(() -> {
                  try {
                    r.run();
                  } finally {
                    scheduleNext();
                  }
                });
                if (active == null) {
                  scheduleNext();
                }
              }

              protected synchronized void scheduleNext() {
                if ((active = tasks.poll()) != null) {
                  executor.execute(active);
                }
              }
            }}

Les Executor implémentations fournies dans ce package implémentent ExecutorService, qui est une interface plus étendue. La ThreadPoolExecutor classe fournit une implémentation de pool de threads extensible. La Executors classe fournit des méthodes de fabrique pratiques pour ces exécuteurs.

Effets de cohérence de la mémoire : actions dans un thread avant de soumettre un Runnable objet à un Executor<i>happen-before</i> son exécution commence, peut-être dans un autre thread.

Ajouté à la version 1.5.

Java documentation pour java.util.concurrent.Executor.

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)
JniIdentityHashCode

Retourne la valeur de java.lang.System.identityHashCode() l’instance encapsulée.

(Hérité de IJavaPeerable)
JniManagedPeerState

État de l’homologue managé.

(Hérité de IJavaPeerable)
JniObjectReferenceControlBlock

Objet qui exécute des tâches envoyées Runnable .

(Hérité de IJavaPeerable)
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
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 Dispose(); sinon, ne fait rien.

(Hérité de IJavaPeerable)
Execute(IRunnable)

Exécute la commande donnée à un moment donné à l’avenir.

Finalized()

Appelé lorsque l’instance a été finalisée.

(Hérité de IJavaPeerable)
SetJniIdentityHashCode(Int32)

Définissez la valeur retournée par JniIdentityHashCode.

(Hérité de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Objet qui exécute des tâches envoyées Runnable .

(Hérité de IJavaPeerable)
SetPeerReference(JniObjectReference)

Définissez la valeur retournée par PeerReference.

(Hérité de IJavaPeerable)
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
GetJniTypeName(IJavaPeerable)

Obtient le nom JNI du type de l’instance self.

JavaAs<TResult>(IJavaPeerable)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Objet qui exécute des tâches envoyées Runnable .

TryJavaCast<TResult>(IJavaPeerable, TResult)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

S’applique à