在Java中,咱们可以使用Thread.sleep()
方法来使线程休眠一段时间。要使线程休眠到指定的时间,你可以计算出当前时间到目标时间的时间差,然后将线程休眠这段时间。
接下来上代码:这段设置的时间为指定结束时间设置休眠
import java.util.Calendar;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// 获取当前时间
Calendar currentTime = Calendar.getInstance();
// 设置目标时间
Calendar targetTime = Calendar.getInstance();
targetTime.set(Calendar.HOUR_OF_DAY, 12); // 设置小时
targetTime.set(Calendar.MINUTE, 0); // 设置分钟
targetTime.set(Calendar.SECOND, 0); // 设置秒钟
// 如果目标时间早于当前时间,则将目标时间推迟到明天
if (targetTime.before(currentTime)) {
targetTime.add(Calendar.DATE, 1);
}
// 计算当前时间和目标时间的时间差(毫秒)
long timeDifference = targetTime.getTimeInMillis() - currentTime.getTimeInMillis();
try {
// 将线程休眠到指定的时间
Thread.sleep(timeDifference);
System.out.println("到达指定时间:" + targetTime.getTime());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
这个示例中,我们首先将目标时间(例如10秒后)设置为当前时间加上10000毫秒(即10秒)
public class SleepExample {
public static void main(String[] args) {
long endTime = System.currentTimeMillis() + 10000; // 设置休眠结束的时间(例如10秒后)
while (System.currentTimeMillis() < endTime) {
try {
Thread.sleep(1000); // 每次休眠1秒
} catch (InterruptedException e) {
e.printStackTrace();
break; // 如果线程被中断,则退出循环
}
}
System.out.println("休眠结束");
}
}
需要注意的是,Thread.sleep()
方法可能会抛出InterruptedException
异常,所以你需要使用try-catch
块来捕获这个异常,并决定如何处理它。在上述示例中,我们选择打印堆栈跟踪并退出循环,但你可以根据你的需求来选择其他处理方式。