我有一个使用ntp的盒子,我们运行了几个显示时钟的java程序.我们遇到的问题是,如果有任何事情将系统时间向后踢,我们所有的定时器都会做一些事情,例如让时钟停止动画并等到系统时间回到原来的状态.我需要找到一种方法来检测系统时间何时向后改变并重置所有定时器或一组可以反复调度但仍能防止时钟变化的定时器.
作为一个注释,我已经尝试过石英计时器包,它与普通的java计时器有同样的问题.
几乎所有计时器都设定了未来时间,然后定期将当前时间与给定时间进行比较.这就是为什么计时器在实时倒退时"停滞"的原因.
不幸的是,JVM中的所有计时器都与一天中的时间有关.例如,java.util.Timer为要触发的事件执行Object.wait(milliSeconds).这归结为一个线程调用也会等待t毫秒.而且它始终与"一天中的时间"相关.
所以,基本上没有真正的方法在没有旋转的CPU中执行此操作,CPU吸吮循环等待时间向后以通知您关心重置的计时器.
| 归档时间: |
|
| 查看次数: |
2451 次 |
| 最近记录: |