我有一个使用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/