如果正好是2:00,并且我告诉Java ScheduledExecutorService在一分钟内执行任务,那么任务是否可能在系统时钟达到2:01之前甚至一纳秒开始执行?
首先是几个定义:
- Precision—值的小数位数
- 精度-测量值与其"真实值"之间的差值值(对于任何被认为是"true"的值)
您在PC上找到的时钟将没有纳秒精度。那么问题是,准确度相对于什么?
请记住,光每纳秒传播约1英尺(电信号约为纳秒的一半),所以根据相对论,这里的2:00:00.000000000在其他地方,甚至在房间里(或在主板上),的时间都不一样。
你能精确到纳秒吗?可能不需要极其昂贵的硬件。你依赖于操作系统以零延迟更新内部时钟,这可能涉及从罕见的闰秒到内部时钟漂移调整的一切,这可能使时钟运行得更快或更慢,以跟上外部时间信号(参见网络时间协议)。
所以总的来说,不能保证1分钟的延迟完全等于60.000000000秒,尽管您可能可以计算毫秒精度(除非间隔跨越闰秒)。它很可能是>小于60秒,但间隔可能更短。