【发布时间】:2023-03-26 20:13:01
【问题描述】:
在 Java 应用程序中,我希望能够在操作开始时获取时间戳,并能够定期检查操作已经运行了多长时间。问题是:我不想受到网络时间协议移动时钟、管理员更改时间或任何可以突然调整一天中时间的事情的影响。我想要一个单调递增的时间值。我相信这排除了 java.util.Date、Time 和 Calendar。
JRE 中是否存在单调递增时间戳的某些来源?
【问题讨论】:
在 Java 应用程序中,我希望能够在操作开始时获取时间戳,并能够定期检查操作已经运行了多长时间。问题是:我不想受到网络时间协议移动时钟、管理员更改时间或任何可以突然调整一天中时间的事情的影响。我想要一个单调递增的时间值。我相信这排除了 java.util.Date、Time 和 Calendar。
JRE 中是否存在单调递增时间戳的某些来源?
【问题讨论】:
您是否考虑过使用System.nanoTime()?
它仅在计算两个事件之间经过的时间时才有意义。由于文档声明它与任何系统或墙上时间无关,我相信它可以在您的情况下使用。
【讨论】:
nanoTime() 对于在虚拟机中运行的进程不一定是单调的:frankkieviet.blogspot.jp/2009/03/…。这个答案也很相关:stackoverflow.com/a/2979239/709537