Ich habe ein mysteriöses Problem mit einem Java-Code für Hausaufgaben gefunden. Ein Freund Programm eine Anwendung, die diese am Anfang:Java bricht nicht, wenn es unter Linux läuft
public void run() {
vm.setVisible(true);
while(!end);
System.out.println("Finish");
vm.setVisible(false);
}
Die boolean ‚end‘ falsch ist, während alle die Ausführung und wenn der Benutzer die Anwendung beendet wird dies geschieht:
private class CloseSys implements ActionListener {
public CloseSys() {super();}
public void actionPerformed(ActionEvent e) {
System.out.println("CLOSE SYS");
System.out.println("end: "+end);
end = true;
System.out.println("end: "+end);
}
}
Die println zeigt wie Der Wert von "Ende" ändert sich im Computer meines Freundes (MacOS) und währenddessen und auch in der Anwendung zu "Wahr" und "logisch".
Das Problem ist, dass in meinem Computer (Ubuntu Linux) die println auch wie der Wert ändert, aber die while nicht endet (die "Finish" println wird nie erreicht). Das lustige daran ist, wenn wir in die Weile Prints hineinlegen ... dann funktioniert es!
Hinweis: Sie sollten Swing (oder in der Praxis AWT) nicht vom AWT Event Dispatch Thread (EDT) verwenden. –