Windows上的Java准确睡眠

有谁知道一个为Java提供Thread.sleep()的库,该库的错误不超过1-2毫秒?

我尝试了睡眠,错误测量和BusyWait的混合,但在不同的Windows机器上却无法获得这种可靠性。

如果该实现也可用于Linux和MacOS,则它可以是本机实现。

Nick提供的链接(http://blogs.oracle.com/dholmes/entry/inside_the_hotspot_vm_clocks)是了解Java各种计时器/睡眠/时钟问题的一个很好的资源。

回答:

为了提高睡眠的粒度,您可以从Thread.sleep页面尝试以下操作。

如果计时对您的应用程序至关重要,那么解决这些错误的一种优雅而实用的方法是让守护程序线程在应用程序的整个运行期间一直运行,而该线程只需休眠大量的毫秒数(Long.MAX_VALUE即可)。这样,将在每次调用应用程序时设置一次中断时间,以最小化对系统时钟的影响,并将睡眠粒度设置为1ms,即使默认中断时间不是15ms。

该页面还提到,它会导致Windows的系统范围更改,由于此bug可能导致用户的时钟快速运行。

有关更多信息,请参见

此处,以及Sun

的相关错误报告。

以上是 Windows上的Java准确睡眠 的全部内容, 来源链接: utcz.com/qa/397654.html

回到顶部