while Schleife wird nicht beendet, obwohl Sie hätte breaken sollen

needInput

Mitglied
Selbst wenn windowIsActive auf false gesetzt wird, wird die while True Schleife nicht beendet.
Genau das Selbe gilt natürlich auch dafür, wenn windowIsActive in der while Bedingung steht.
Wie kann man das lösen?
Java:
while(true){
        if(!windowIsActive){
              System.out.println("break ausgeführt");
              break;
         }
 }
 
Wenn du Multithreading verwendest, ist das nur möglich, wenn windowIsActive eine Variable ist, auf die mehrere Threads zugreifen. Also Thread 1 (der die Schleife ausführt) liest die Variable und ein anderer Thread 2 schreibt die Variable. Wenn der Zugriff auf die Variable nicht korrekt synchronisiert ist, etwa per synchronized auf dasselbe Objekt oder dadurch, dass windowIsActive als volatile markiert ist, dann _kann_ es passieren, dass Thread 1 den Zustand der Variablen nicht _sieht_ wie er von Thread 2 geschrieben wurde. Wenn du aber kein Multithreading verwendest, dann machst du irgendwas anderes falsch, wie etwa, dass windowIsActive in der Schleife nicht dieselbe Variable ist wie windowIsActive im schreibenden Fall (also etwa einmal ist es eine lokale Variable und andermal eine andere lokale Variable oder ein Feld in einer Klasse).
 

Zurück
Oben