Java nie przestrzega kodu? [duplikować]
To pytanie ma już tutaj odpowiedź:
Pętla nie widzi wartości zmienionej przez inny wątek bez instrukcji drukowania 1 odpowiedźOto fragment kodu, który według mnie nie jest zgodny z kodem, który powinien zrobić:
public void updateTimeElapsed() {
timeElapsedLabel.setText("Time elapsed: " + ((System.nanoTime() - time) / Math.pow(10, 9)));
}
public void updateTimeElapsedIndefinitely() {
while (true) {
//System.out.println("Hi");
//TODO: Why this no work?
if (start) { System.out.println("Shoulda'"); updateTimeElapsed(); }
}
}
Jeśli komentuję
System.out.println("Hi")
Kod najwyraźniej nie działa. Jeśli go odkomentuję, to tak!
Uwaga: start jest prawdziwy, gdy tylko naciśniesz 's', aby rozpocząć grę. Jednak metoda ta jest wywoływana na początku, więc „cześć” powinna być wyświetlana wiele razy i na czas nieokreślony do momentu naciśnięcia klawisza „s”.
Obraz mówi tysiąc słów, więc dam ci setki zdjęć (wideo), aby wyjaśnić, co mam na myśli:https://dl.dropbox.com/u/2792692/CodeWeird.ogv
https://dl.dropbox.com/u/2792692/CodeWeird.wmv
Czy ktoś może mi powiedzieć, co się dzieje?