0
点赞
收藏
分享

微信扫一扫

java休眠到指定时间怎么写

在Java中,要让程序休眠到指定时间,你可以使用java.time包中的LocalDateTime类和Thread.sleep()方法。以下是一个示例:

import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;

public class SleepUntilSpecificTime {
    public static void main(String[] args) {
        try {
            // 设置目标时间,例如:2022-01-01 12:00:00
            LocalDateTime targetTime = LocalDateTime.of(2022, 1, 1, 12, 0, 0);

            // 计算当前时间与目标时间之间的毫秒数
            long millisecondsUntilTargetTime = ChronoUnit.MILLIS.between(LocalDateTime.now(), targetTime);

            // 如果目标时间已经过去,则不进行休眠
            if (millisecondsUntilTargetTime > 0) {
                // 休眠到目标时间
                Thread.sleep(millisecondsUntilTargetTime);
            }

            // 目标时间到达后执行的操作
            System.out.println("目标时间已到达,执行操作...");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

这个示例中,我们首先设置了一个目标时间(2022年1月1日12点)。然后,我们计算当前时间与目标时间之间的毫秒数。接下来,我们使用Thread.sleep()方法让程序休眠指定的毫秒数。最后,当目标时间到达时,执行相应的操作。

在Java中,要确保在休眠期间不触发其他线程,可以使用synchronized关键字对休眠代码块进行同步。这将确保在休眠期间,其他线程无法访问同步代码块中的资源。以下是一个示例:

public class SleepAndSynchronize {
    private static final Object lock = new Object();

    public static void main(String[] args) {
        new Thread(SleepAndSynchronize::sleepAndSynchronize).start();
        new Thread(SleepAndSynchronize::otherThread).start();
    }

    public static void sleepAndSynchronize() {
        synchronized (lock) {
            try {
                System.out.println("线程1:开始休眠...");
                Thread.sleep(5000);
                System.out.println("线程1:休眠结束...");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void otherThread() {
        synchronized (lock) {
            System.out.println("线程2:等待线程1休眠结束...");
        }
    }
}

在这个示例中,我们创建了一个名为lock的静态对象。sleepAndSynchronize()方法和otherThread()方法都使用synchronized关键字同步,以确保在休眠期间,其他线程无法访问同步代码块中的资源。当线程1休眠结束后,线程2将继续执行。

java休眠到指定时间怎么写_无法访问

举报

相关推荐

0 条评论