https://docs.oracle.com/javase/6/docs/api/java/lang/System.html#currentTimeMillis()说:

以毫秒为单位返回当前时间.请注意,虽然返回值的时间单位为毫秒,但值的粒度取决于底层操作系统,可能更大.例如,许多操作系统以几十毫秒为单位测量时间.

我不清楚我是否保证这段代码总是打印不断增加(或相同)的数字.

while (1) { 
    System.out.println(System.currentTimeMillis() );
}

推荐答案

简而言之,答案是否定的,System.currentTimeMillis()not单调的.它基于系统时间,因此在时钟调整(例如通过NTP)的情况下,可能会发生任何方向(向前或向后)的变化.

System.nanoTime()是单调的,当且仅当底层平台支持CLOCK_MONOTONIC时——请参阅Java bug report 6458294上的注释,以获得关于某些情况的良好说明,这些情况是/不是这样的.

(另外,作为一个轶事,我个人(多次)观察到System.currentTimeMillis()在没有时钟调整的情况下跨线程"向后"运行——也就是说,在一个线程中对该方法的调用返回的值低于在另一个线程中的调用,尽管它是在"实时"中按时间顺序发生的.)

如果你需要一个单调源,在支持单调性的平台上安装System.nanoTime()个是你最好的 Select .

Linux相关问答推荐

IntelliJ(PyCharm)不再识别Linux中的AltGr快捷键

Linux 上 Ada 任务优先级的语义是什么?

为什么 `std::this_thread::yield()` 比 `std::this_thread::sleep_for(0s)` 慢 10 倍?

X86 程序集 - struct 点 - 存储/返回不正确?

替换前 3 个字符范围内的所有整数

将 Visual Studio C++ 项目迁移到 Linux 和 CMake

在服务器目录之外启动 DolphinDB 服务器时出错

我可以防止 gcc 优化器延迟内存分配吗?

为什么 8 位字符串文字可以包含多字节字符,而 char 向量不能?

std::system 使用什么Shell?

sig_atomic_t 实际上是如何工作的?

MessageBox 的 GTK 实现

如何在 Linux 上捕获原始 HID 输入?

在 cron 作业(job)中执行 PHP 脚本

如何克隆 OpenLDAP 数据库

比较linux中两个未排序的列表,列出第二个文件中的唯一性

如何等待第一个命令完成?

当将信号量减为零的进程崩溃时,如何恢复信号量?

构建窗口管理器

内联 if shell 脚本