2 SwingWorkers nacheinander ausführen

Carcharoth

Bekanntes Mitglied
Guten Abend

Ich habe einen SwingWorker der eine Berechnung macht, Zwischen- und Endresultat in einer GUI anzeigt.
Nun möchte ich mit dem Endresultat eine zweite Berechnung machen und auch da Zwischen- und Endresultat anzeigen. Also am liebsten einen zweiten SwingWorker starten. Bevor der zweite SwingWorker starten kann, muss ich also sicher sein, dass der erste fertig ist und das Resultat vorliegt.

Mir ist nicht klar, ob ich den zweiten SwingWorker in der Done-Methode des ersten verschachteln soll (kommt mir komisch vor) oder, ob ich dem ersten SwingWorker einen PropertyChangeListener hinzufügen soll und die Property "done" abfragen. Oder, ob beides Quatsch ist...

Danke für eure Tipps.
Gruss

Java:
worker = new SwingWorker<Void, ArrayList<Integer>>() {
        @Override
        protected Void doInBackground() throws Exception {
            // Berechnung & publish
            return null;
        }

        @Override
        protected void process(List<ArrayList<Integer>> chunks) {
            // Zwischenresultate anzeigen       
        }

        @Override
        protected void done() {
            // Endresultat anzeigen
        }
    };

    worker.execute();
 
Der Ansatz ist generell richtig: Die eigentliche Steuerung ist außerhalb und über das Observer Pattern wird diese Stelle informiert.

Ob du da nun ein PropertyChangeListener verwendest oder irgend etwas anderes, ist dabei egal. Du kannst da auch ein Consumer<T> verwenden oder etwas eigenes.

Generell kann man auch Observer / Observable aus Java.util nutzen …

Aber aus Sicht der Gliederung hast du richtig erkannt, dass die eigentliche Berechnung nichts kenn von weiteren Berechnungen oder so.
 

Neue Themen


Zurück
Oben