he encontrado un problema misterioso con un código de Java para hacer la tarea. Un programa de amigo una aplicación que esta al principio:de Java no se rompe cuando, cuando se ejecuta en Linux
public void run() {
vm.setVisible(true);
while(!end);
System.out.println("Finish");
vm.setVisible(false);
}
El 'fin' booleano es falso, mientras que toda la ejecución y cuando el usuario sale de la aplicación sucede esto:
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);
}
}
El println muestra como el valor de 'end' cambia a verdadero y lógicamente en la computadora de mi amigo (MacOS) mientras termina y la aplicación también.
El problema es que en mi computadora (Ubuntu Linux) el println también muestra como el valor cambia pero el tiempo no termina (nunca se llega al println "Finish"). Lo gracioso es si ponemos impresiones en el momento ... ¡entonces funciona!
en cuenta que no debe utilizar oscilación (o en la práctica AWT) de la rosca de distribución de eventos AWT (EDT). –