java - 如何在 Windows 中使用粗略计时器分辨率编写 Java Thread.sleep() 代码

标签 java thread-sleep system-clock

我有一个使用Thread.sleep(msUntilActionNeeded);的应用程序。该变量设置为毫秒数,直到我希望程序开始与一天中的时间一致的操作,因此它并不重要。即使偏离 5000ms 也不是问题,所以 10ms 的分辨率就有点过分了。

(小)问题是 Windows 报告程序或服务请求的计时器分辨率小于平台最大计时器分辨率。

定时器分辨率没必要那么小。我已将毫秒四舍五入到最接近的 10 毫秒倍数,但没有明显效果。

如何更改我的程序或 JVM 设置以使请求的计时器分辨率不那么小?

最佳答案

您无法直接从 Java 控制计时器分辨率。

出于更流畅的动画和其他原因,JVM 和/或其他应用程序有时会降低平台计时器分辨率。 Java 无法让您控制平台计时器分辨率。

您确定 Java 运行时负责提高计时器分辨率吗?您是否尝试过使用其他 JRE?

如果你想改变定时器分辨率,你需要JNI。但这是一个有趣的blogpost Bruce Dawson 讲述了您不想提高计时器分辨率的原因(浪费电力和计算能力)。

关于java - 如何在 Windows 中使用粗略计时器分辨率编写 Java Thread.sleep() 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750679/

相关文章:

java - 当我准备在 Eclipse 上向 EGit 做出贡献时出现问题,无法完成下载过程

java - 如何在主题(Liferay)中默认使 portlet 无边界?

java - 等待函数有逻辑错误

python - Python 中的可中止 sleep ()

ubuntu - 是否可以建立一个纯内部NTP系统?

java - Solr查询计算两点之间的地理距离

java - 为什么需要 Thread.start()?

emulation - 提高qemu时钟的速度

java - 如果时钟改变,Timertask.scheduleAtFixedRate 应该做什么?

java - 尝试从 AngularJS 到 Spring MVC 使用 $http.post 服务时出现错误 415 - Maven