java - 计算时间跨度的最佳方法是什么?

标签 java time timing

如果我要编写一个时钟应用程序,并且需要在每一秒后逐字增加短秒值,我可以依赖Thread.sleep(1000)方法吗?

如果我有数百万个时钟同时运行,它会正常工作吗?

最佳答案

不,您不能依赖 Thread.sleep(1000),因为它取决于 CPU 调度程序来确定您的线程下次实际运行的时间。

最重要的是,CPU 计时并不完全准确,因此除非您与正确的时间服务同步(原子钟),否则您将得到与真实时间的自然偏差.

话虽如此,如果您确实打算运行“数百万个时钟”,那么最好有一个正在更新的计时器,并且仅在每个时钟实例中存储该计时器的偏移量。

此外,通过减少线程 hibernate 时间并仅根据需要更新秒数,您可以提高准确性。但请注意,如上所述, sleep 时间无法保证。这意味着即使您要求它 hibernate 10 毫秒,从技术上讲,它也有可能在 10 秒内不返回(或 <<insert arbitrary time here>>

关于java - 计算时间跨度的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4810061/

相关文章:

java - Eclipse:有没有办法在源文件夹之间创建依赖关系?

Java 'ext' 目录与 -Xbootclasspath/p :

java - Microprofile 在构建时生成 Open-Api 文件

date - Flutter:国际时间

c - time() 在调试(JTAG)时可以,在片上运行时则不行。如何使用嵌入式进程计时?

matlab - 访问结构体与 "loose"变量所需的时间

java - 相当于D语言中的ExecutorService?

clock_gettime() 对比。 gettimeofday() 用于测量 OpenMP 执行时间

java - 实例化第二个类,java会等到第二个类的构造函数完成,然后移动到下一行代码吗?

multithreading - 如何找到每个 future 在 Scala 中花费的时间?