我有一个Java程序,其中有一个循环,每20秒检查一次新消息。
示例:
while (true) {
Thread.sleep(20000);
newMessages();
}
这在计算机运行时有效。但是,如果用户想让他们的计算机进入睡眠状态,然后在一段时间后将其唤醒,整个程序就会搞砸,不再每20秒检查一次消息。有没有办法纠正这个?
答案 0 :(得分: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);