Java,timer问题?

来源:百度知道 编辑:UC知道 时间:2024/06/15 20:28:57
我想做一个每毫秒更新的秒表程序,就是直接显示时间,不要时钟那种。
我new Timer(1, this);每毫秒更新一次,但是显示的秒数比实际的要慢,把1变成1000即,1秒钟,显示的秒数就正常了?为什么?00:00.00

因为执行语句还需要时间,如果语句执行时间与间隔时间很近,那么误差就会很大,比如运行一次输出语句需要0.1ms,那么0.1ms后再间隔1ms,再输出结果又需要0.1ms,那如此循环10次后,误差就有1ms了,那每1秒钟内误差就有0.1s。
但是如果间隔时间是1s,运行时间还是0.1ms,再间隔1s输出结果,那么每10s才会有0.1ms误差。

你搞的这么快,cpu忙不过来的。cpu不只是为你这个定时器服务,他只要慢了一次,到你这里就越来越慢了。其实一秒几十次就好的,没必要这么快,人眼睛没那么敏感。一秒1000次和一秒100次在人看起来是一样的,只不过对cpu来说就是很打不同了。1000意味着他无法脱身去干别的,100次对他来说没什么问题。