運行此代碼,我希望它將測試變量增加5秒,然後完成。定時while循環不終止
import java.util.Timer;
import java.util.TimerTask;
public class Test {
private static boolean running;
public static void main(String[] args) {
long time = 5 * 1000; // converts time to milliseconds
long test = Long.MIN_VALUE;
running = true;
// Uses an anonymous class to set the running variable to false
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() { running = false; }
}, time);
while(running) {
test++;
}
timer.cancel();
System.out.println(test);
}
}
但是,當我運行它的程序沒有結束(我假設,我給了它一個合理的時間)。但是,如果我將while循環更改爲
while(running) {
System.out.println();
test++;
}
程序在預計的時間內完成(並打印出很多行)。我不明白。爲什麼會發生這種行爲?
如果你運行'volatile'會怎麼樣? –
我剛剛使用JDK 7和IntelliJ 11測試了您的代碼,並在幾秒鐘內完成了兩個版本。你用什麼來運行? –
@AndyTurner哇,我從來沒有遇到過揮發性關鍵字。這使代碼工作。謝謝! – DenverCoder9