Threads mit asynchron Rückgabe über Callable

Um einen neuen Thread zu starten der ein Ergebniss asynchron liefert, gibt es seit Java 1.5 die Schnittstelle Callable.

Was muss getan werden?

-Die Klasse mit dem Ergebniss muss Callableimplementieren und V call() throws Exception überschreiben.

-Evl. im Konstruktor der Ergebniss Klasse Parameter mitgeben.

-Dann den Excecutor anlegen ExecutorService executor = Executors.newCachedThreadPool();

-Einen neuen Überwachungs Thread starten mit Future erg = executor.submit(ergebnisKlasse).
Würde man Future erg = executor.submit(u).get() verwenden würde eine synchrone abarbeitung des Threads erfolgen. Das heißt es würde die weitere Bearbeitung solange geblockt, bis der Thread fertig ist.

-Mit erg.get(1, TimeUnit.SECONDS) wird das Ergebnis des Threads geliefert oder aber wenn die angegebenen Zeit abgelaufen ist wird
eine TimeoutException geworfen.

-Mit erg.isDone() kann abgefragt werden ob der Thread fertig ist oder nicht