IFuture Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 Runnable
wird, und kann daher von einer Executor
ausgefü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 |
IsDone |
Gibt zurück |
JniIdentityHashCode |
Gibt den Wert |
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 |
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 |
SetJniManagedPeerState(JniManagedPeerStates) |
A |
SetPeerReference(JniObjectReference) |
Legen Sie den von |
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 |
GetJniTypeName(IJavaPeerable) |
A |
GetAsync(IFuture) |
A |
GetAsync(IFuture, Int64, TimeUnit) |
A |