Java не следует за кодом? [Дубликат]

This question already has an answer here:

Loop doesn't see value changed by other thread without a print statement 1 answer

Вот фрагмент кода, который, я думаю, не соответствует тому, что код должен делать:

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(); }
    }
}

Если я прокомментирую

System.out.println("Hi")

Код видимо не работает. Если я раскомментирую это, тогда это произойдет!

Замечания: начало истинно, как только вы нажмете & s; чтобы начать игру. Тем не менее, метод вызывается в начале, так что "привет" должно отображаться много раз и бесконечно, пока я не нажму кнопку 's'; ключ.

Картинка говорит тысячу слов, поэтому я дам вам сотни картинок (видео), чтобы объяснить, что я имею в виду: https://dl.dropbox.com/u/2792692/CodeWeird.ogv

https://dl.dropbox.com/u/2792692/CodeWeird.wmv

Может кто-нибудь сказать мне, что происходит?

Ответы на вопрос(2)

Ваш ответ на вопрос