I cambiar un valor que se utiliza para determinar cuando un bucle while termina en un hilo separado.
No quiero saber cómo hacerlo funcionar. Si accedo a la prueba variable sólo a través sincronizados getters/setters funciona como se esperaba ..comportamiento extraño en Java con acceso unsyncronized en un programa de multihilo
lo que habría esperado, si algunos de escritura/lectura se pierden debido a la concurrencia el programa a veces no termina, pero nunca hace. Eso es lo que me confunde ..
Me gustaría saber por qué el programa nunca termina, sin la impresión de comandos. Y me gustaría entender por qué la impresión comando cambia nada ..
public class CustomComboBoxDemo {
public static boolean test = true;
public static void main(String[] args) {
Thread user =new Thread(){
@Override
public void run(){
try {
sleep(2000);
} catch (InterruptedException e) {}
test=false;
}
};
user.start();
while(test) {
System.out.println("foo"); //Without this line the program does not terminate..
}
}
}
Ver: [Loop no ve el valor cambiado sin una declaración impresa] (https://stackoverflow.com/questions/25425130/loop-doesnt-see-changed-value-without-a -print -statement) – Boann