Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个 Java 程序,其中有一个循环,每 20 秒检查一次新消息。
例子:
while (true) { Thread.sleep(20000); newMessages(); }
这在计算机运行时有效。但是,如果用户让他们的计算机进入睡眠状态,然后在一段时间后将其唤醒,整个程序就会变得一团糟,不再每 20 秒检查一次消息。有没有办法纠正这个问题?
而不是使用Thread.sleep你可以使用Timer.
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