如何实现准确的定时任务?
来源:7-2 Handler 发送消息的 Delay 靠谱吗?

慕UI200323
2022-11-12
老师您好,在另一个问题中您回答到了:“高时间准确性最简单的办法就是单独用一个线程计时,再用别的线程执行任务。一般任务足够了。”
这里我理解的是通过 Thread.sleep()
来进行计时的,对吗?还是说在该线程中创建一套 Looper
机制,再通过 Handler
来做计时?
另外,我看 JDK 中提供的 Timer
类是通过 Object.wait(long timeout)
来实现延迟操作的,该类的注释中说了这样会不精准。那么为什么 Object.wait(long timeout)
会不精准呢?麻烦老师解惑一下。
写回答
1回答
-
sleep 和 handler 在这个角度上都是一样的,只是阻塞和唤醒的机制不同而已。
wait 不精确,因为 CPU 调度机制导致唤醒时间不可能严格与设定的时间相等。这种对于实时系统就不适用了,但我们一般这种消费级的系统影响不大。
00
相似问题
求思路
回答 1