Guten Abend
Ich habe die Klasse UF deren Konstruktor im EDT aufgerufen wird.
Darin wird abwechslungsweise etwas mit einer Berechnung gemacht (ausserhalb des EDT) und diverses an einer GUI gemacht (im EDT).
Wie kann ich sicherstellen, dass die eine Arbeit eines anderen Threads fertig ist, bevor ich mit der nächsten Arbeit anfange?
In der Berechnung möchte ich z.B. die GUI mit einem Progress updaten. Greife ich aber "zu früh" darauf, ist die Initialisierung der GUI vielleicht noch nicht fertig und ich kriege ein Fehler.
Ich habe die Klasse UF deren Konstruktor im EDT aufgerufen wird.
Darin wird abwechslungsweise etwas mit einer Berechnung gemacht (ausserhalb des EDT) und diverses an einer GUI gemacht (im EDT).
Wie kann ich sicherstellen, dass die eine Arbeit eines anderen Threads fertig ist, bevor ich mit der nächsten Arbeit anfange?
In der Berechnung möchte ich z.B. die GUI mit einem Progress updaten. Greife ich aber "zu früh" darauf, ist die Initialisierung der GUI vielleicht noch nicht fertig und ich kriege ein Fehler.
Java:
public UF() {
setSize(800, 600);
setLocationRelativeTo(null);
contentPane = getContentPane();
contentPane.setLayout(null);
contentPane.add(new TreePanel(50,50,300,400, this));
new Thread(new Runnable() {
public void run() {
// hier wird die Berechnung initialisiert.
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// hier wird eine grafische Darstellung auf der GUI mit dem Anfangszustand der Berechnung initialisiert
}
});
// BERECHNUNG: hier wird eine längere Berechnung in einer Klasse "Berechnung" gemacht
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// hier wird das Ergebnis der Berechnung in der grafische Darstellung auf der GUI ausgegeben
}
});
}
}).start();
}