Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
Früher(:tm:) war es kompliziert eine Aufgabe an einen Thread zu delegieren, wenn man auch noch ein Ergebnis haben wollte. Da brauchte man ein Runable Objekt und das Ergebnis musste auch irgendwo abgelegt werden dann mußte man auch noch auf die Threads warten...
Heute:
T call()
submit()
an den Service und bekommt ein Future<T>
Objekt zurück.
T get()
class MyThread? implements Callable<String> {
@Override
public String call() throws Exception {
// Mach hier was wichtiges im Thread
return "Ergebnis";
}
}
@Test
ExecutorService? executor = Executors.newFixedThreadPool(1); Future<String> future = executor.submit(new MyThread?()); String value = future.get(); executor.shutdown(); Assert.assertEquals("Ergebnis", value); }
Schon läuft das MyThread Objekt im eigenen Thread. Die future.get()
wartet so lange, bis die Funktion call()
zurückkommt. Das ist alles.
Das geht mit beliebig vielen Objekten, na schön, irgendwann gibt irgendetwas auf...