, я изменяю значение, которое используется для определения, когда цикл while завершается в отдельном потоке.
Я не хочу знать, как заставить это работать. Если я обращаюсь к тесту переменных только через синхронизированные геттеры / сеттеры, он работает так, как ожидалось.
Я ожидал, что если некоторые команды чтения / записи теряются из-за параллелизма, программа иногда не завершается, но никогда делает. Вот что меня смущает ..
Я хотел бы знать, почему программа никогда не завершается без команды печати. И я хотел бы понять, почему команда печати что-то меняет ..
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..
}
}
}