在 Java 中使用日历功能替代睡眠/等待功能

Using Calendar Function To Substitute Sleep / Wait Function in Java

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

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 函数是这样工作的,但我很好奇为什么会这样。

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

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

这在性能方面不是一个好主意。