Sprache

IExecutor Schnittstelle

Definition

Ein Objekt, das gesendete Runnable Aufgaben ausführt.

[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
Abgeleitet
Attribute
Implementiert

Hinweise

Ein Objekt, das gesendete Runnable Aufgaben ausführt. Diese Schnittstelle bietet eine Möglichkeit zum Entkoppeln der Aufgabenübermittlung von der Funktionsweise der einzelnen Aufgaben, einschließlich Details zur Threadverwendung, Planung usw. Eine Executor wird normalerweise verwendet, anstatt explizit Threads zu erstellen. Anstatt z. B. für jede Gruppe von Aufgaben zu aufrufen new Thread(new RunnableTask()).start() , können Sie Folgendes verwenden:

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

Die Schnittstelle erfordert jedoch nicht unbedingt, dass die Executor Ausführung asynchron ist. Im einfachsten Fall kann ein Executor die übermittelte Aufgabe sofort im Thread des Aufrufers ausführen:

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

In der Regel werden Aufgaben in einem anderen Thread als dem Thread des Aufrufers ausgeführt. Der folgende Executor führt einen neuen Thread für jede Aufgabe durch.

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

Viele Executor Implementierungen setzen eine Art von Einschränkung auf, wie und wann Vorgänge geplant werden. Der folgende Ausführungsausführer serialisiert die Übermittlung von Aufgaben an einen zweiten Executor, der einen zusammengesetzten Executor veranschaulicht.

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

Die Executor in diesem Paket bereitgestellten Implementierungen implementieren ExecutorServiceeine umfangreichere Schnittstelle. Die ThreadPoolExecutor Klasse stellt eine erweiterbare Threadpoolimplementierung bereit. Die Executors Klasse stellt praktische Factorymethoden für diese Executors bereit.

Konsistenzeffekte im Speicher: Aktionen in einem Thread, bevor ein Runnable Objekt an ein Executor<i-Happen-Before></i> übermittelt wird, beginnt die Ausführung, vielleicht in einem anderen Thread.

Hinzugefügt in 1.5.

Java-Dokumentation für java.util.concurrent.Executor.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Eigenschaften

Name Beschreibung
Handle

Ruft den JNI-Wert des zugrunde liegenden Android-Objekts ab.

(Geerbt von IJavaObject)
JniIdentityHashCode

Gibt den Wert java.lang.System.identityHashCode() für die umbrochene Instanz zurück.

(Geerbt von IJavaPeerable)
JniManagedPeerState

Status des verwalteten Peers.

(Geerbt von IJavaPeerable)
JniObjectReferenceControlBlock

Ein Objekt, das gesendete Runnable Aufgaben ausführt.

(Geerbt von IJavaPeerable)
JniPeerMembers

Mitgliedszugriff und Aufrufunterstützung.

(Geerbt von IJavaPeerable)
PeerReference

Gibt eine JniObjectReference der umbrochenen Java Objektinstanz zurück.

(Geerbt von IJavaPeerable)

Methoden

Name Beschreibung
Disposed()

Wird aufgerufen, wenn die Instanz verworfen wurde.

(Geerbt von IJavaPeerable)
DisposeUnlessReferenced()

Wenn keine offenen Verweise auf diese Instanz vorhanden sind, wird nichts aufgerufen Dispose(). Andernfalls wird nichts ausgeführt.

(Geerbt von IJavaPeerable)
Execute(IRunnable)

Führt den angegebenen Befehl zu einem bestimmten Zeitpunkt in der Zukunft aus.

Finalized()

Wird aufgerufen, wenn die Instanz abgeschlossen wurde.

(Geerbt von IJavaPeerable)
SetJniIdentityHashCode(Int32)

Legen Sie den von JniIdentityHashCode.

(Geerbt von IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Ein Objekt, das gesendete Runnable Aufgaben ausführt.

(Geerbt von IJavaPeerable)
SetPeerReference(JniObjectReference)

Legen Sie den von PeerReference.

(Geerbt von IJavaPeerable)
UnregisterFromRuntime()

Heben Sie die Registrierung dieser Instanz auf, damit die Laufzeit sie nicht aus zukünftigen Java.Interop.JniRuntime+JniValueManager.PeekValue Aufrufen zurückgibt.

(Geerbt von IJavaPeerable)

Erweiterungsmethoden

Name Beschreibung
GetJniTypeName(IJavaPeerable)

Ruft den JNI-Namen des Typs der Instanz selfab.

JavaAs<TResult>(IJavaPeerable)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Ein Objekt, das gesendete Runnable Aufgaben ausführt.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

Gilt für: