0

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

例子:

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

这在计算机运行时有效。但是,如果用户让他们的计算机进入睡眠状态,然后在一段时间后将其唤醒,整个程序就会变得一团糟,不再每 20 秒检查一次消息。有没有办法纠正这个问题?

4

1 回答 1

2

而不是使用Thread.sleep你可以使用Timer.

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

您的代码可能是:

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

定时器 Javadoc

于 2013-05-18T19:36:33.913 回答