如何实现准确的定时任务?

来源:7-2 Handler 发送消息的 Delay 靠谱吗?

慕UI200323

2022-11-12

老师您好,在另一个问题中您回答到了:“高时间准确性最简单的办法就是单独用一个线程计时,再用别的线程执行任务。一般任务足够了。”

这里我理解的是通过 Thread.sleep() 来进行计时的,对吗?还是说在该线程中创建一套 Looper 机制,再通过 Handler 来做计时?

另外,我看 JDK 中提供的 Timer 类是通过 Object.wait(long timeout) 来实现延迟操作的,该类的注释中说了这样会不精准。那么为什么 Object.wait(long timeout) 会不精准呢?麻烦老师解惑一下。

写回答

1回答

bennyhuo

2022-11-12

sleep 和 handler 在这个角度上都是一样的,只是阻塞和唤醒的机制不同而已。

wait 不精确,因为 CPU 调度机制导致唤醒时间不可能严格与设定的时间相等。这种对于实时系统就不适用了,但我们一般这种消费级的系统影响不大。

0
0

大厂资深面试官 带你破解Android高级面试

改变视野和思维 深度与广度兼备的 Android 进阶面试指导课程

1636 学习 · 222 问题

查看课程