繁体   English   中英

javax.swing.timer的时间间隔是否恒定?

[英]Is javax.swing.timer's interval constant?

javax.swing.Timer ,我们可以这样设置时间间隔

int delay = 1000;    //update every 1000 millisecond
Timer t = new Timer(delay, listener);

有了以上内容,我希望每个间隔之间的时间延迟为1000毫秒。 但是,当我在Swing应用程序中使用它时,每个时间间隔的延迟是1014 to 1015

当我将延迟设置为1 测试的延迟为每个间隔15 to 16毫秒。


关于上述Timer行为,我有两个问题:

问题1 :是什么导致我的间隔增加了14 to 15毫秒? 是运行Swing应用程序所需的“开销”吗?

问题2 :是否可以保证在Timer构造函数或timer.setDelay()所说的时间延迟? 我问这个问题是因为我知道Thread.sleep(delay)不能保证,并且会随范围而变化。 那么, javax.swing.Timer呢?

计时器使用由操作系统实现的睡眠操作。 在Windows上运行32位应用程序时,它使用Win XP仿真器,其运行方式与在Windows XP上相同。

如果您使用64位JVM,它将利用OS时钟的改进,则它应以1毫秒的分辨率运行。

注意:Java 5.0中添加的ExecutorService使用System.nanoTime()LockSupport.parkNanos(n) ,使用高分辨率时钟时应该不会出现此问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM