在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块来捕获这个异常,并决定如何处理它。在上述示例中,我们选择打印堆栈跟踪并退出循环,但你可以根据你的需求来选择其他处理方式。