Freigeben über


IFuture Schnittstelle

Definition

A Future stellt das Ergebnis einer asynchronen Berechnung dar.

[Android.Runtime.Register("java/util/concurrent/Future", "", "Java.Util.Concurrent.IFutureInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "V" })]
public interface IFuture : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/concurrent/Future", "", "Java.Util.Concurrent.IFutureInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "V" })>]
type IFuture = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Abgeleitet
Attribute
Implementiert

Hinweise

A Future stellt das Ergebnis einer asynchronen Berechnung dar. Methoden werden bereitgestellt, um zu überprüfen, ob die Berechnung abgeschlossen ist, auf den Abschluss zu warten und das Ergebnis der Berechnung abzurufen. Das Ergebnis kann nur mithilfe der Methode get abgerufen werden, wenn die Berechnung abgeschlossen wurde, falls erforderlich, bis sie bereit ist. Der Abbruch wird von der cancel Methode ausgeführt. Zusätzliche Methoden werden bereitgestellt, um festzustellen, ob die Aufgabe normal abgeschlossen oder abgebrochen wurde. Nach Abschluss einer Berechnung kann die Berechnung nicht abgebrochen werden. Wenn Sie eine Future aus Gründen der Abbruchbarkeit verwenden möchten, aber kein verwendbares Ergebnis bereitstellen möchten, können Sie Typen des Formulars Future<?> deklarieren und als Ergebnis der zugrunde liegenden Aufgabe zurückgeben null .

<b>Beispielverwendung</b> (Beachten Sie, dass die folgenden Klassen bestehen.)

{@code
            interface ArchiveSearcher { String search(String target); }
            class App {
              ExecutorService executor = ...;
              ArchiveSearcher searcher = ...;
              void showSearch(String target) throws InterruptedException {
                Callable<String> task = () -> searcher.search(target);
                Future<String> future = executor.submit(task);
                displayOtherThings(); // do other things while searching
                try {
                  displayText(future.get()); // use future
                } catch (ExecutionException ex) { cleanup(); return; }
              }
            }}

Die FutureTask Klasse ist eine Implementierung, die Future implementiert Runnablewird, und kann daher von einer Executorausgeführt werden. Beispielsweise könnte der oben genannte Bau durch submit Folgendes ersetzt werden:

{@code
            FutureTask<String> future = new FutureTask<>(task);
            executor.execute(future);}

Konsistenzeffekte im Speicher: Aktionen, die von der asynchronen Berechnung <i>happen-before</i-Aktionen> ausgeführt werden, die dem entsprechenden in einem anderen Thread folgen Future.get() .

Hinzugefügt in 1.5.

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

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Eigenschaften

Handle

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

(Geerbt von IJavaObject)
IsCancelled

Gibt zurück true , ob diese Aufgabe abgebrochen wurde, bevor sie normal abgeschlossen wurde.

IsDone

Gibt zurück true , wenn diese Aufgabe abgeschlossen wurde.

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

Mitgliedszugriff und Aufrufunterstützung.

(Geerbt von IJavaPeerable)
PeerReference

Gibt eine JniObjectReference der umbrochenen Java-Objektinstanz zurück.

(Geerbt von IJavaPeerable)

Methoden

Cancel(Boolean)

Versucht, die Ausführung dieser Aufgabe abzubrechen.

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)
Finalized()

Wird aufgerufen, wenn die Instanz abgeschlossen wurde.

(Geerbt von IJavaPeerable)
Get()

Wartet, falls erforderlich, bis die Berechnung abgeschlossen ist, und ruft dann das Ergebnis ab.

Get(Int64, TimeUnit)

Wartet, falls erforderlich, bis die Berechnung abgeschlossen ist, bis die Berechnung abgeschlossen ist, und ruft dann das Ergebnis ab, falls verfügbar.

SetJniIdentityHashCode(Int32)

Legen Sie den von JniIdentityHashCode.

(Geerbt von IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

A Future stellt das Ergebnis einer asynchronen Berechnung dar.

(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

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

A Future stellt das Ergebnis einer asynchronen Berechnung dar.

GetJniTypeName(IJavaPeerable)

A Future stellt das Ergebnis einer asynchronen Berechnung dar.

GetAsync(IFuture)

A Future stellt das Ergebnis einer asynchronen Berechnung dar.

GetAsync(IFuture, Int64, TimeUnit)

A Future stellt das Ergebnis einer asynchronen Berechnung dar.

Gilt für: