pp.04.02-Future

Asynchrone Ausführung mit Callable und Future

  • Projekt: pp.04.02-Future
  • Bearbeitungszeit: 10 Minuten
  • Musterlösung: 10 Minuten
  • Kompatibilität: mindestens Java SE 10

In dieser Aufgabe programmieren Sie die asynchrone Ausführung wie in pp.04.01-RunnableReturn, nun aber mit Future und Callable

Quellcode von Main

public class Main {
    public static void main(String... args) {
        var executor = Executors.newCachedThreadPool();
        // hier programmieren
        executor.shutdown();
    }
}

Aufgaben

Main

Implementieren Sie dieselbe Funktionalität wie in pp.04.01-RunnableReturn mit Future und Callable: Erzeugen Sie drei RunnableWithResult-Objekte für die Berechnung des Ausdrucks ((1+2)+(3+4)), die nebenläufig zum Main-Thread ausgeführt werden. Das Ergebnis soll ausgegeben werden. Sie können Lambda-Ausdrücke* oder Inner Classes benutzen um die Expression’s zu erzeugen.*

Callable<T> und Future<T>

Für Expression<T> und RunnableWithResult<T> gibt es seit Java 5 Callable<T> und Future<T>. Bilden Sie zwei Paare: Welches Java 5 Interface ersetzt das selbst entwickelte Expression<T> und welches RunnableWithResult<T>?

Exceptions

Was sind die Unterschiede zwischen den selbst entwickelten Expression<T> bzw. RunnableWithResult<T> und Callable<T> bzw. Future<T> beim Exception-Handling? Provozieren Sie wieder eine Exception durch Division durch 0. Wann wird sie nun realisert und wo muss man sie behandeln?