我在我的应用程序中使用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并将其打印到日志中的纳米时间
这就像Java API文档所说System.nanoTime():
此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关.返回的值表示纳秒,因为某些固定但任意的原始时间(可能在将来,因此值可能为负).在Java虚拟机的实例中,此方法的所有调用都使用相同的原点; 其他虚拟机实例可能使用不同的来源.
此方法提供纳秒级精度,但不一定是纳秒级分辨率(即,值的变化频率) - 除了分辨率至少与currentTimeMillis()的分辨率一样好之外,不做任何保证.
它不提供与时间戳(currentTimeMillis)的任何耦合,也不提供固定的分辨率.
在您的情况下,似乎Java现在具有比以前更高的分辨率计时器,因此不需要使用系统时间.
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |