Threads Listener für Future finish

K

KuhTee

Gast
Hallo,


ich habe eine Library, welche diverse asynchron laufende Methoden zur Verfügung stellt. Diese Methoden liefern mir ein Future Objekt zurück. Das ist prinzipiell sehr gut, aber nun habe ich gemerkt, dass es offenbar keinen FutureListener (oder ähnliches) gibt? Offenbar gibt es nur zwei blockierende (!) get() Methoden, deren Verwendung auch im Beispiel in der Future Beschreibung drinsteht. Nun habe ich also eine asynchron laufende Funktion, aber am Ende warte ich doch wieder blockierend. Keine Ahnung, wer bei Sun/Oracle da zuviel Gras geraucht hat, aber sehr durchdacht scheint mir das nicht.
Gibt es da eine empfohlene Lösung? Evtl eine, die über einen weiteren Thread, welcher ständig auf das Future pollt, hinaus geht?
Beim googlen habe ich diverse Vorschläge gefunden wie das Erben von ThreadPoolExecuter und allerlei andere Vorschläge, die mir aber nicht wirklich weiterhelfen. Mehr als das Future was ich zurückbekomme habe ich wie gesagt nicht.


Danke.
 

mohrenkopf

Mitglied
Wenn du wirklich nicht mehr hast als die Futures und auch der ExecutorService.submit(...) Kram gekapselt ist, hast du wohl wenig Möglichkeiten.

So was ähnliches habe ich mal gemacht, habe es ein wenig angepasst, vielleicht kommst du damit weiter.

Gruß mohrenkopf

Java:
/*
 * Demo FutureListener
 * (c) mohrenkopf
 */
package DemoFutureListener;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;


//Demo-Library
class Library
{
    static public Future doSomething() {return null;}
}


interface FutureListener
{
    public void onTaskIsDone( Future f );
}


class FutureDispatcher implements Runnable
{
    ScheduledExecutorService scheduler;
    Map<Future, FutureListener> map = new HashMap<Future, FutureListener>();

    public FutureDispatcher()
    {
        //Jede Sekunde alle Futures auf .isDone() ckecken
        scheduler.scheduleAtFixedRate( this, 0, 1, TimeUnit.SECONDS );
    }

    public void handleWhenDone( Future f, FutureListener listenerToCallWhenDone )
    {
        map.put( f, listenerToCallWhenDone );
    }

    @Override
    public void run()
    {
        for ( Future f : map.keySet() )
        {
            //TODO: Thread-sicher machen!
            if ( f.isDone() )
            {
                map.get( f ).onTaskIsDone( f );
                map.remove( f );
            }
        }
    }
}

public class Test
{

    public static void main( String[] args ) throws Exception
    {
        FutureDispatcher handler = new FutureDispatcher();

        FutureListener listener = new FutureListener()
        {

            @Override
            public void onTaskIsDone( Future f )
            {
                System.out.println( "Darauf habe ich gewartet" );
            }
        };


        Future f = Library.doSomething();

        //Ruft den Listener auf, sowie Future fertig ist.
        handler.handleWhenDone( f, listener );

    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Listener für constructor einer bestimmen Klasse Allgemeine Java-Themen 9
P Listener für Tastatureingaben ohne Focus Allgemeine Java-Themen 4
hdi Listener für Desktop-Veränderungen Allgemeine Java-Themen 7
G Code-Convention für Listener Allgemeine Java-Themen 2
S Listener für Kalender Allgemeine Java-Themen 2
J Listener für Ende eines Threads gesucht... Allgemeine Java-Themen 5
E Listener für Änderung der Fenstergröße Allgemeine Java-Themen 3
berserkerdq2 Was heißt es mit FXML Listener zu setzen ind Buttons zu erstellen? Allgemeine Java-Themen 6
L Wie programmiert man einen Listener? Allgemeine Java-Themen 1
S Threads Serielle Schnittstelle mit Listener / Aufrufendes GUI Allgemeine Java-Themen 4
H Listener Verständnisproblem Allgemeine Java-Themen 5
D Action Listener Problem Allgemeine Java-Themen 3
S Key Listener mit Strg + s Allgemeine Java-Themen 12
TheWhiteShadow Listener Reihenfolge Allgemeine Java-Themen 4
D Listener auf System.out.err / System.out.println Allgemeine Java-Themen 5
E Bild mit Listener einfügen Allgemeine Java-Themen 3
serjoscha WatchDog Thread und Listener Allgemeine Java-Themen 10
T JTextField in Listener leeren Allgemeine Java-Themen 2
lenniii Listener & JList Allgemeine Java-Themen 3
K Key listener ohne Fokus aktiv behalten ? Allgemeine Java-Themen 12
T Observer vs Listener Allgemeine Java-Themen 18
S Listener Allgemeine Java-Themen 3
P Abstrakte Elternklasse als Listener Allgemeine Java-Themen 6
MQue KeyAction listener Allgemeine Java-Themen 2
M generische Listener Allgemeine Java-Themen 2
B Observer vs Listener (GUI-Programmierung) Allgemeine Java-Themen 5
S Listener Implentierung bei Eingabe in Textfeld Allgemeine Java-Themen 2
G Objekt einer inneren Klasse als Listener Allgemeine Java-Themen 3
D Boolean Listener? Allgemeine Java-Themen 28
M Listener und Performance Allgemeine Java-Themen 9
D Observer/Observable Pattern vs. Listener-Konzept Allgemeine Java-Themen 4
G Listener auf aktuelles Datum / Uhrzeit Allgemeine Java-Themen 2
Escorter Eigenen Listener schreiben Allgemeine Java-Themen 3
E Gibt es so etwas wie einen Windows Listener? Allgemeine Java-Themen 6
T SelectionProvider und Listener Frage Allgemeine Java-Themen 14
I Listener, der zeitlich-periodisch aufgerufen wird Allgemeine Java-Themen 3
R Generische Listener und Sender Allgemeine Java-Themen 12
B Listener dynamisch setzen Allgemeine Java-Themen 6
A Listener Tastatur Allgemeine Java-Themen 3
E Wie: Eigener Listener, eigenes Event (möglichst einfach) Allgemeine Java-Themen 29
D Thread vs Listener Allgemeine Java-Themen 6
K Listener einem Objekt hinzufügen Allgemeine Java-Themen 3
S Listener-Problematik in komplexem Projekt Allgemeine Java-Themen 2
I Listener/Event selber machen. Allgemeine Java-Themen 4
M Time Listener ? Allgemeine Java-Themen 2
Z Zwei Listener zwischen zwei Klassen Allgemeine Java-Themen 4
B statusbar update -> mit thread oder listener? Allgemeine Java-Themen 7
M Action-listener Allgemeine Java-Themen 6
M Bean Listener hinzufügen und Methode später überschreiben Allgemeine Java-Themen 27
G Flavor-Listener Allgemeine Java-Themen 6
W Listener an ein beliebiges Objekt hänger, der mir Änderung Allgemeine Java-Themen 8
Z Problem beim Aufruf eines Listener? Allgemeine Java-Themen 4
A HILFE: subclass von Hashtable mit listener aufstellen Allgemeine Java-Themen 5
B Algorithmus für Arbeit mit fehlenden Listenelementen? Allgemeine Java-Themen 1
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3
Karl_Der_Nette_Anfänger Hat wer ne Lösung für verknüpfte Postleitzahlen? (Baum/Wurzel Struktur) Allgemeine Java-Themen 11
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
G KeyListener für JTextField Allgemeine Java-Themen 5
webracer999 Library für Textsuche (z. B. include/exclude, and/or)? Allgemeine Java-Themen 5
I Module-Info für Jar erzeugen Allgemeine Java-Themen 7
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
B Simpler Eventlistener für Tastaturtaste bauen? Allgemeine Java-Themen 13
_user_q Eingegebenen Text Zeile für Zeile ausgeben lassen Allgemeine Java-Themen 11
E Key für TOTP Algorythmus(Google Authentificator) Allgemeine Java-Themen 0
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
M pfx-Zertifikat in Tomcat für SSL-Verschlüsselung nutzen Allgemeine Java-Themen 14
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
jhCDtGVjcZGcfzug Klassen Was genau passiert hier? Kann mir das jemand bitte Zeile für Zeile erklären? Allgemeine Java-Themen 1
rosima26 Bester Sortieralgorithmus für kurze Arrays Allgemeine Java-Themen 40
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
MangoTango Operatoren while-Schleife für Potenz Allgemeine Java-Themen 3
B Lottospiel, genug Reihen tippen für 3 Richtige (Spaß mit Arrays)? Allgemeine Java-Themen 46
B Mit welchen Datentypen und Strukturierung am Besten dutzende Baccaratspiele Shcritt für Schritt durchsimulieren? Allgemeine Java-Themen 26
D Klassendesign für einen Pascal Interpreter Allgemeine Java-Themen 6
I OCR Library für Belegerkennung Allgemeine Java-Themen 7
farah GetterMathod für Farbkanäle Allgemeine Java-Themen 6
B Welcher Datentyp für sehr große Zahlenbereiche? Allgemeine Java-Themen 1
S Webservices für binäre Daten? Allgemeine Java-Themen 5
G Licence-Header für InHouse entwickelten Source Allgemeine Java-Themen 8
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
O git ignore für Intellji braucht es die .idea Dateien? Allgemeine Java-Themen 8
F Java Script für das Vorhaben das richtige? Allgemeine Java-Themen 9
M wiviel Java muss ich für die Berufswelt können ? Allgemeine Java-Themen 5
Robertop Datumsformat für GB ab Java 16 Allgemeine Java-Themen 1
Thallius Verschiedene entities für gleichen Code…. Allgemeine Java-Themen 8
OnDemand Zentrale "Drehscheibe" für verschiedene APIs Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
D SHA-3 für Java-version 1.8 Allgemeine Java-Themen 1
N Validator für einen SQL-Befehl Allgemeine Java-Themen 22
Muatasem Hammud Erstellung von Testdaten für Arrays Allgemeine Java-Themen 6
B Logikfehlersuche, das perfekte Lottosystem für 3 Richtige mit Arraylists? Allgemeine Java-Themen 61
G Methoden für die Zukunft sinnvoll? Allgemeine Java-Themen 4
M API für PLZ Umkreissuche Allgemeine Java-Themen 3
1Spinne JDK 8 für Eclipse installieren Allgemeine Java-Themen 5
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
L Methoden Parser für gängige Datumsformate? Allgemeine Java-Themen 1
H Interface PluginSystem ClassNotFound exception für library Klassen Allgemeine Java-Themen 10
N relativier Pfad für sqlite-Datenbank in Gradle/IntelliJ Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben