CodeGym/Java-Kurse/Modul 3: Java Professional/Ausführende: ausführbare Objekte

Ausführende: ausführbare Objekte

Verfügbar

6.1 Ausführbare Objekte

Damit sind wir beim größten Teil des Pakets angelangt. Es werden Schnittstellen zum Ausführen asynchroner Aufgaben mit der Möglichkeit beschrieben, Ergebnisse über die Schnittstellen Future und Callable zu erhalten, sowie Dienste und Fabriken zum Erstellen von Thread-Pools: ThreadPoolExecutor, ScheduledPoolExecutor, ForkJoinPool.

Zum besseren Verständnis führen wir eine kleine Zerlegung der Schnittstellen und Klassen durch.

6.2 Realisierungen ausführbarer Objekte

Future<V>ist eine wunderbare Schnittstelle zum Abrufen der Ergebnisse einer asynchronen Operation. Die Schlüsselmethode hier ist die get-Methode, die den aktuellen Thread (mit oder ohne Timeout) blockiert, bis ein asynchroner Vorgang in einem anderen Thread abgeschlossen ist. Es gibt auch zusätzliche Methoden zum Abbrechen des Vorgangs und zum Überprüfen des aktuellen Status. Als Implementierung wird häufig die Klasse FutureTask verwendet.

RunnableFuture<V>- Wenn Future eine Schnittstelle für die Client-API ist, wird die RunnableFuture-Schnittstelle bereits zum Starten des asynchronen Teils verwendet. Der erfolgreiche Abschluss der run()-Methode beendet den asynchronen Vorgang und ermöglicht den Abruf der Ergebnisse über die get-Methode.

Callable<V>– Ein erweitertes Analogon der Runnable-Schnittstelle für asynchrone Vorgänge. Ermöglicht die Rückgabe eines eingegebenen Werts und das Auslösen einer geprüften Ausnahme. Obwohl diese Schnittstelle keine run()-Methode hat, unterstützen viele java.util.concurrent-Klassen sie zusammen mit Runnable.

FutureTask<V>— Implementierung der Future/RunnableFuture-Schnittstelle. Eine asynchrone Operation wird als Eingabe für einen der Konstruktoren in Form von ausführbaren oder aufrufbaren Objekten verwendet. Die FutureTask-Klasse selbst ist so konzipiert, dass sie in einem Arbeitsthread gestartet wird, beispielsweise über new Thread(task).start() oder über ThreadPoolExecutor. Die Ergebnisse einer asynchronen Operation werden über die Methode get(...) abgerufen.

Delayed- wird für asynchrone Aufgaben verwendet, die in der Zukunft starten sollen, sowie in DelayQueue. Ermöglicht Ihnen, die Zeit vor dem Start eines asynchronen Vorgangs festzulegen.

ScheduledFuture<V>– eine Marker-Schnittstelle, die die Future- und Delayed-Schnittstellen kombiniert.

RunnableScheduledFuture<V>– eine Schnittstelle, die RunnableFuture und ScheduledFuture kombiniert. Darüber hinaus können Sie angeben, ob es sich bei der Aufgabe um eine einmalige Aufgabe handelt oder ob sie in einer bestimmten Häufigkeit ausgeführt werden soll.

Kommentare
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Auf dieser Seite gibt es noch keine Kommentare