使用日历功能替换Java中的睡眠/等待功能

时间:2015-10-22 08:50:32

标签: java calendar wait sleep

所以有一天,我想知道我是否可以在初始化其余程序代码之前制作一个等待几秒钟的简单程序。我当时的第一个想法是使用这样的日历功能;

import java.util.Calendar;

public class NewMain {

static int count = 0 ;
static int time = 0 ;

public static void main(String[] args) {

    Calendar cal = Calendar.getInstance();

    time = cal.get(Calendar.MINUTE);
    count = time +1;
    System.out.println(time);
    System.out.println(count);

    while (time < count){
        time = cal.get(Calendar.MINUTE);
    }

    System.out.println("Done");

}

这个想法是当time的值变得大于count时,程序的其余部分将被执行。但是,当我尝试使用此代码时,程序会在time的值大于之后继续运行 count

我知道这是一个糟糕的代码,因为它浪费了资源,sleepwait功能就像这样,但我很好奇为什么会这样。

1 个答案:

答案 0 :(得分:1)

您的Calendar对象代表一个固定的时间点。每次时间更改时,其字段都不会更新,因此重复调用cal.get(Calendar.MINUTE)将始终返回相同的值。因此,time < count 总是 true。您需要在每次迭代时获得一个新的Calendar实例才能使其工作:

while (Calendar.getInstance().get(Calendar.MINUTE) < count) { ... }

在表现方面,这不是一个好主意。