Java 8 引入了 java.time.Clock接口(interface),它应该允许我有效地模拟系统时间调用(太棒了!)。
我想天真地用对 someClock.millis()
的调用替换对 System.currentTimeMillis()
的调用,但我不清楚这些根据 Clock.system*
文档中给出的 caviet,两个时钟实际上将在所有情况下返回相同的值,该文档声明它们使用“...最佳可用系统时钟”。 System.currentTimeMillis()
没有指定任何关于使用最佳可用时钟的类似声明。
最佳答案
嗯,不,你不能保证它会完全一样,因为
The system factory methods provide clocks based on the best available system clock. This may use System.currentTimeMillis(), or a higher resolution clock if one is available
所以它明确声明它可能使用更好的时钟,这意味着它绝对可能不同。
即使您分析了所有现有的实现并发现它们都在使用 System.currentTimeMillis()
,您也无法明确保证事情会保持这种状态,因此依赖它是无效的。
这是否足够接近您的目的取决于您的应用程序和个人偏好。
关于java - 天真地用 Clock.systemDefaultZone().millis() 替换 System.currentTimeMillis() 是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30268491/