Esto es de lo más raro que he visto nunca. Estoy empezando a programar más en serio en JAVA bajo linux, y ya empiezo a encontrar problemas muy muy extraños.
Que diferencia hay entre estas dos expresiones para que cuando se cumpla la condición se salga del bucle?
while(!pc.gpsconnected){}
while(!pc.gpsconnected){System.out.print("");}
Mientras que en la primera en cuanto se cumple la condición no sale nunca.... (da igual las expresiones que ponga dentro, he probado de todo), en la segunda si meto algun System.out entonces en cuanto se cumple la condición, esta vez si sale del bucle u_U. Lo encontré por casualidad depurando con prints. La cuestión es que no debería afectar para nada que el bucle estuviera vacío.
Estoy bajo la JRE 1.6.07.0 (AMD 64bits), y la verdad es que me está llevando de cabeza.
La aplicación es un GPS que he montado, está leyendo del puerto serie de un conversor 232-USB (dev/ttyUSB0). Entonces hay un JComboBox que en cuanto seleccionas uno de los puertos y se conecta satisfactoriamente, pone el flag de la condición a True y a correr...... solo si pongo un print dentro del bucle u_U
Teneis alguna noticia o algo de comportamientos raros de java bajo linux?
Este mismo programa escrito bajo windows no da ningún problema.
pd: un apunte por si sirviera de algo, el while esta dentro del run de un thread.
pd2: Podria hacer un wait, pero como hago el notify? , el objeto pc (donde esta el flag) es otra clase heredada de JPanel creado en el mismo thread