java - Thread.sleep 的准确性如何?

标签 java timing

我正在研究计算机硬件,我们了解到使用硬件计时器比使用软件延迟可以获得更准确的结果。我已经在汇编中编写了 1 毫秒的软件延迟,我可以启动一个使用此延迟重复每毫秒的进程,并使用计数器每 100 毫秒执行一次其他操作,并且这种技术不如使用我使用的硬件计时器准确内置在我现在要使用的硬件中。

所以我想知道 Java 内置的计时有多准确?我们有 System.currentTimeMillisThread.sleep,它们可能不使用硬件计时器,那么与硬件计时器相比,这些 Java 内置方法的准确性如何?

最佳答案

Thread.sleep() 不准确。不准确的程度取决于底层操作系统及其计时器和调度程序。我经历过并行进行的垃圾收集会导致过度 sleep 。

在进行“实时”模拟时,您必须纠正主循环中 sleep 的不准确之处。这可以通过计算预期的唤醒时间并将其与实际的唤醒时间进行比较并在下一个循环中校正差异来完成。

如果您需要更好的性能,请查看 Java Real-Time System specification .我自己没有使用过,所以无法提供更多细节。

关于java - Thread.sleep 的准确性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18736681/

相关文章:

c++ - 计算函数在 C++ 中花费多长时间的最佳方法是什么?

python - 在上下文中模拟计时以创建具有字段 DateTimeField 和 auto_now_add=True 的模型

java - 在 Spring Boot 中上传多个文件的最佳方法

java - 如何在 BroadcastReceiver 中访问 MainActivity 的对象或方法?

java - Google Glass 的 Hello World 程序 - 一步一步

java - 在无效的源代码发布级别 13 启用预览功能,只能在源代码级别启用预览 14Java(2098258)

javascript - $.each 内的 setTimeout 不会遵守时间安排

java - 适用于 Android 的 SSH 服务器库

c - 在 Linux 中获得时序一致性

javascript - 如何测量 JavaScript 中交互和 mousedown 事件之间的延迟?