java - system.nanoTime()运行得太慢了

Bic*_*ick 0 java nanotime

我在我的应用程序中使用system.nanoTime,并计算相对于starttime的时间.
我的应用程序运行得非常好,直到我将其复制到新计算机上并且在其上纳米时间给了我较慢的值.

我写了一个简单的应用程序,以确保.
将纳米时间与系统时间进行比较.
它在除我的新计算机之外的其他计算机中显示相同的值.有什么建议?

这是我的代码:首先我有

private long initNanoTime = System.nanoTime();
private long initTime = System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)

比我循环每秒运行一次的线程:

long timeUsingNanoTime = initTime + (System.nanoTime() - initNanoTime) / 1000000;
long timeUsingMilis = System.currentTimeMillis();
long nanotimeOffset = Math.abs(timeUsingNanoTime - timeUsingMilis);
if (nanotimeOffset < 100l) ? print("close") : print(far);
Run Code Online (Sandbox Code Playgroud)

编辑:我正在使用nano因为我需要处理纳秒时间内发生的ts并将其打印到日志中的纳米时间

Nee*_*eet 6

这就像Java API文档所说System.nanoTime():

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关.返回的值表示纳秒,因为某些固定但任意的原始时间(可能在将来,因此值可能为负).在Java虚拟机的实例中,此方法的所有调用都使用相同的原点; 其他虚拟机实例可能使用不同的来源.

此方法提供纳秒级精度,但不一定是纳秒级分辨率(即,值的变化频率) - 除了分辨率至少与currentTimeMillis()的分辨率一样好之外,不做任何保证.

它不提供与时间戳(currentTimeMillis)的任何耦合,也不提供固定的分辨率.

在您的情况下,似乎Java现在具有比以前更高的分辨率计时器,因此不需要使用系统时间.