Chạy mã này, tôi hy vọng nó sẽ tăng biến thử nghiệm trong 5 giây và sau đó kết thúc.Thời gian trong khi vòng lặp không kết thúc
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);
}
}
Tuy nhiên khi tôi chạy chương trình không kết thúc (tôi giả sử, tôi đã cho nó một khoảng thời gian hợp lý). Tuy nhiên, nếu tôi thay đổi vòng lặp while thành
while(running) {
System.out.println();
test++;
}
Chương trình kết thúc trong khoảng thời gian dự kiến (và in ra nhiều dòng). Tôi không hiểu. Tại sao hành vi này xảy ra?
Điều gì sẽ xảy ra nếu bạn chạy 'biến động '? –
Tôi vừa thử nghiệm mã của bạn bằng cách sử dụng JDK 7 với IntelliJ 11 và cả hai phiên bản đều kết thúc sau vài giây. Bạn đang sử dụng cái gì để chạy? –
@AndyTurner wow, tôi chưa bao giờ bắt gặp từ khóa dễ bay hơi trước đây. Thats làm cho mã hoạt động. Cảm ơn! – DenverCoder9