首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是javax.swing.Timer的间隔常数吗?

是javax.swing.Timer的间隔常数吗?
EN

Stack Overflow用户
提问于 2015-10-01 13:07:28
回答 1查看 334关注 0票数 0

javax.swing.Timer中,允许将时间间隔设置为这样:

代码语言:javascript
复制
int delay = 1000;    //update every 1000 millisecond
Timer t = new Timer(delay, listener);

有了上述情况,我将期望每个间隔之间的时间延迟为1000毫秒。但是,当我在Swing应用程序中使用它时,每个间隔的延迟都是1014 to 1015

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

关于上述计时器行为,我有两个问题:

Q1:是什么导致将额外的14 to 15毫秒添加到我的间隔中?这是运行Swing应用程序所需的“开销”吗?

Q2:时间延迟会像我们在计时器构造函数或timer.setDelay()中所说的那样得到保证吗?我之所以这样问,是因为我知道Thread.sleep(delay)中的延迟是不能保证的,而且它会随着范围的不同而变化。那么,javax.swing.Timer呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-08 18:58:13

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

如果您使用64位JVM (它将利用操作系统时钟的改进),那么它应该以100秒的分辨率运行。

注意:Java5.0中添加的ExecutorService使用System.nanoTime()LockSupport.parkNanos(n),在使用高分辨率时钟时不会出现这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32888397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档