在计算机睡眠时恢复Java程序?

在计算机睡眠时恢复Java程序?,java,loops,sleep,resume,Java,Loops,Sleep,Resume,我有一个Java程序,其中有一个循环,每20秒检查一次新消息 例如: while (true) { Thread.sleep(20000); newMessages(); } 这在计算机运行时起作用。然而,如果用户想让他们的计算机进入睡眠状态,然后在一段时间后将其唤醒,那么整个程序就会混乱,不再每隔二十秒检查一次消息。有没有办法纠正这个问题?而不是使用线程。sleep你可以使用定时器 线程调度任务以供将来在后台线程中执行的工具。任务可以安排为一次性执行,也可以定期重复执行 您的

我有一个Java程序,其中有一个循环,每20秒检查一次新消息

例如:

while (true) {
    Thread.sleep(20000);
    newMessages();
}

这在计算机运行时起作用。然而,如果用户想让他们的计算机进入睡眠状态,然后在一段时间后将其唤醒,那么整个程序就会混乱,不再每隔二十秒检查一次消息。有没有办法纠正这个问题?

而不是使用
线程。sleep
你可以使用
定时器

线程调度任务以供将来在后台线程中执行的工具。任务可以安排为一次性执行,也可以定期重复执行

您的代码可能是:

final Timer timer = new Timer();
final TimerTask task = new TimerTask() {        
    @Override
    public void run() {
        newMessages();
    }
};      
timer.scheduleAtFixedRate(task, new Date(), 20000);