Hallo,
ich lasse in einem Thread eine iterative Berechnung durchführen. Über einen Statuscode kann ich abfragen, ob die Berechnung noch läuft oder beendet wurde. Der entsprechende Code sieht somit wie folgt aus:
Solange die Berechnung läuft, ist der Status 0. Bricht die Berechnung ab - warum auch immer - ändert sich dieser Wert auf 1 oder -1.
Lasse ich den Code so, wie gezeigt, wird die while-Schleife nicht mehr verlassen. Entferne ich den Kommentar bei System.out.println innerhalb der Schleife, sehe ich, wie der Staus irgendwann von 0 auf 1 springt und die Schleife sofort beendet wird. Wie kann das sein?
In meiner run-Methode, die gestartet wird, wird der Status auch korrekt ausgegeben:
Kann mir einer einen Tipp geben, warum das so ist?
Gruß Micha
ich lasse in einem Thread eine iterative Berechnung durchführen. Über einen Statuscode kann ich abfragen, ob die Berechnung noch läuft oder beendet wurde. Der entsprechende Code sieht somit wie folgt aus:
Java:
if (aaa2d != null)
new Thread( aaa2d ).start();
while (true) {
status2d = (aaa2d == null)?100:aaa2d.getCurrentEstimationStatus();
//System.out.println("Berechnungsstatus " + status2d);
if (status2d != 0) {
break;
}
}
System.out.println("ENDE");
Solange die Berechnung läuft, ist der Status 0. Bricht die Berechnung ab - warum auch immer - ändert sich dieser Wert auf 1 oder -1.
Lasse ich den Code so, wie gezeigt, wird die while-Schleife nicht mehr verlassen. Entferne ich den Kommentar bei System.out.println innerhalb der Schleife, sehe ich, wie der Staus irgendwann von 0 auf 1 springt und die Schleife sofort beendet wird. Wie kann das sein?
In meiner run-Methode, die gestartet wird, wird der Status auch korrekt ausgegeben:
Java:
public void run() {
this.adjust();
System.out.println(this.getCurrentEstimationStatus()); // liefert 1
}
Kann mir einer einen Tipp geben, warum das so ist?
Gruß Micha
Zuletzt bearbeitet: