Scala Deadline.time未提供创建Deadline对象时设置的持续时间

问题描述 投票:0回答:1

我正在使用Deadline对象,如下所示。

scala> val d1 = Duration.create(10, "seconds").fromNow
d1: scala.concurrent.duration.Deadline = Deadline(1048157612536608 nanoseconds)

[当我尝试打印设定的时间(在此示例中为10秒)时,它打印的时间不正确。

scala> d1.time
res0: scala.concurrent.duration.FiniteDuration = 1048157612536608 nanoseconds

scala> d1.time.toSeconds
res1: Long = 1048157

从创建同一对象时设置的Deadline对象获取时间的正确方法是什么?

scala duration
1个回答
0
投票
System.nanoTime不能用作时钟。它旨在用于计算时差。

如果您按预期使用Deadline,就会产生时差,您会看到它:

// diff on _rounded_ values 10.seconds.fromNow.time.toSeconds - Deadline.now.time.toSeconds // 10L // diff on _actual_ values - by the time we start calculating `-` it should be less than 10s 10.seconds.fromNow - Deadline.now // 9999991191 nanoseconds

© www.soinside.com 2019 - 2024. All rights reserved.