Ich schreibe eine Multi-Thread-Anwendung, wo ich die Situation habe, dass ich bestimmte Bibliothek bezogenen Methoden, die nur laufen auf demmain-thread
sein. Zur Zeit leite ich eine einfache, selbst geschriebene Lösung, die eine Warteschlange für Aufgaben abhört und sie dann seriell ausführt.Java Testamentsvollstrecker Modell, das nur Aufgaben ausgeführt ermöglicht Thread auf Instanziieren
Dies funktioniert soweit, obwohl es hässlich wird, wenn ich Rückgabewerte usw. brauche Ich löse derzeit den C-Weg, indem ich Datenstrukturen mit den Tasks weiterleite und dann eine Busy-Loop überprüfe, ob die Struktur auf den Standort der Methode geschrieben wurde, die eine Task in die Warteschlange stellt sauberste Lösung, und während es funktioniert, hoffte ich, einen besseren Weg zu finden.
Q: Gibt es etwas in der JDK oder in einer einzelne spezialisierte Bibliothek, die das tut, was ich brauche? Oder gibt es ein Programmiermuster, das meine Bedürfnisse sauber und strukturiert anspricht?
Warum nicht einfach Futures zu Ihrer bestehenden Architektur hinzufügen? Übergeben Sie eine 'CompleableFuture' anstelle dieser abrufbezogenen Struktur. Es kann dann vom cilent mit der Methode 'get()' abgewartet werden (oder abgefragt werden). –
@RomanPuchkovskiy Ich denke, ich würde nicht wissen, wo ich anfangen soll, den zukünftigen Mechanismus zu implementieren. Vielleicht denke ich zu weit ..... es sei denn, ich hatte gerade die geniale Idee, einfach einen Semaphor als eine Art Warte-Sperre für die get-Methode zu verwenden:/ –
Dem vorgeschlagenen Ansatz eine Illustration hinzugefügt –