如果我要编写一个时钟应用程序,并且需要在每一秒后逐字增加短秒
值,我可以依赖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/