在Java中,如果您想让程序休眠直到指定的时间,您可以使用Thread.sleep()
方法来暂停当前线程。不过,Thread.sleep()
接受的参数是要暂停的毫秒数,因此您需要计算从当前时间到您指定时间的差值。
下面是一个简单的示例,展示了如何让Java程序在特定时间唤醒。假设我现在想程序在今天的午夜12点自动唤醒。具体的代码如下:
import java.util.Calendar;
import java.util.Date;
public class SleepUntilSpecificTime {
public static void main(String[] args) {
try {
// 获取当前时间
Date now = new Date();
// 设置目标时间为今天的午夜12点
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.add(Calendar.DATE, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
// 计算需要休眠的时间长度(毫秒)
long sleepTime = calendar.getTimeInMillis() - now.getTime();
if (sleepTime > 0) {
System.out.println("Sleeping for " + sleepTime + " milliseconds");
Thread.sleep(sleepTime);
}
// 唤醒后执行的代码
System.out.println("Awake at midnight!");
} catch (InterruptedException e) {
System.err.println("Sleep was interrupted");
}
}
}
在这个例子中:
- 使用
Calendar
类设置了一个特定的时间(即今天的午夜12点)。 - 计算从当前时间到目标时间的差值,用作
Thread.sleep()
的参数。 - 程序会在计算出的毫秒数后自动唤醒。
注意,如果目标时间已经过去,sleepTime
将会是一个负数,这种情况下Thread.sleep()
将会立即返回,不会有实际的休眠发生。因此,检查sleepTime
是否大于0是一个好的程序员该养成的好习惯哦。