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