在 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
。
我知道这是一个糟糕的代码,因为它浪费资源,并且有 sleep
或 wait
函数是这样工作的,但我很好奇为什么会这样。
您的 Calendar
对象代表一个固定的时间点。它的字段不会在每次时间更改时更新,因此重复调用 cal.get(Calendar.MINUTE)
将始终 return 相同的值。因此,time < count
总是 true
。您需要在每次迭代中获取一个新的 Calendar
实例才能完成此工作:
while (Calendar.getInstance().get(Calendar.MINUTE) < count) { ... }
这在性能方面不是一个好主意。
所以有一天,我想知道我是否可以制作一个简单的程序,在初始化其余程序代码之前等待几秒钟。我当时的第一个想法是像这样使用 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
。
我知道这是一个糟糕的代码,因为它浪费资源,并且有 sleep
或 wait
函数是这样工作的,但我很好奇为什么会这样。
您的 Calendar
对象代表一个固定的时间点。它的字段不会在每次时间更改时更新,因此重复调用 cal.get(Calendar.MINUTE)
将始终 return 相同的值。因此,time < count
总是 true
。您需要在每次迭代中获取一个新的 Calendar
实例才能完成此工作:
while (Calendar.getInstance().get(Calendar.MINUTE) < count) { ... }
这在性能方面不是一个好主意。