System.currentTimeMillis 是否总是返回一个 >= 之前调用的值?

2023-11-24

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

返回当前时间(以毫秒为单位)。请注意,虽然返回值的时间单位是毫秒,但该值的粒度取决于底层操作系统,并且可能会更大。例如,许多操作系统以数十毫秒为单位测量时间。

我不清楚是否能保证此代码将始终打印不断增加(或相同)的数字。

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

最简洁的答案是不,System.currentTimeMillis() is not单调的。它基于系统时间,因此在时钟调整的情况下(例如通过NTP).

System.nanoTime()是单调的,当且仅当底层平台支持CLOCK_MONOTONIC-- 参见评论Java 错误报告 6458294对于某些情况下这是/不正确的情况进行良好的撰写。

(而且,作为一个额外的轶事,我亲自观察过(几次)System.currentTimeMillis()在没有时钟调整的情况下,跨线程“向后”运行——也就是说,在一个线程中调用该方法返回的值低于在另一个线程中调用的值,即使它按时间顺序发生在“实时”之后')

如果您需要单调源,System.nanoTime()在支持单调性的平台上是您的最佳选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

System.currentTimeMillis 是否总是返回一个 >= 之前调用的值? 的相关文章

随机推荐

  • 仅通过存储过程强制 INSERT

    使用 SQL Server 2008 是否有一种方法允许仅通过存储过程插入表 如果可以 如何实现 EDIT 最好的方法可能是马丁 史密斯的建议 即使用代替插入扳机 这个问题的直接答案是 marc s 的 GRANT 和 DENY 答案 尽管
  • java中删除和重命名文件

    我在java中创建了一个文件 file1 我读取了该 file1 并对从 file1 读取的数据进行了一些更改 然后将新数据写入另一个文件 file2 现在我需要的是删除以前的文件 file1 并将文件 file2 的名称更改为 file1
  • 创建动态 html 表单

    我想创建一个动态变化的表单 我有一个用于创建项目的表单 包含以下字段 project name project description 并且该项目可以具有任意数量 大于或等于 0 的类别 我想要的是显示一个按钮 让用户可以选择添加另一个类别
  • 删除 Lucene.net 中的所有索引

    我想删除all之前创建的索引 我在用Lucene net 我尝试了以下方法 Term term new Term empty because I want to delete all the indices IndexReader rdr
  • 仅当字符为 Firebird 2.5 上的数字时才转换为 Int

    我有一个在 MySQL 数据库上使用的查询 该查询对结果进行排序 在可能的情况下 当 char 字符串是数字时 将 char 数据库字段转换为整数 因此例如ORDER BY我在 MySQL 上使用的子句是 ORDER BY CASE WHE
  • 如何在刷新页面时抑制重新发布 - ASP.NET MVC

    我正在使用 asp net mvc 构建一个向导 目前 当用户点击下一个 或上一个 时 表单值将被发布到一个操作 该操作执行所需的任何处理 然后呈现下一个视图 我遇到的问题是 如果用户在新视图中点击刷新 他们会被提示重新发布表单值 这会导致
  • 兼容 x86 的英特尔至强融核加速器中是否有 SIMD(SSE / AVX) 指令?

    x86 兼容加速器 MIC Intel Xeon Phi 中是否有 SIMD SSE AVX 指令 http en wikipedia org wiki Xeon Phi 是的 最新一代的英特尔至强融核协处理器 代号 骑士角 缩写 KNC
  • 如何使用伪 CGO 指令在子目录中添加 C 文件作为 go build 的一部分?

    根据文档 go buildwith cgo 将在包的根目录中添加任何 C C 文件作为编译的一部分 有没有办法使用 CGO 指令使给定子目录中的 C C 文件以及根目录中的文件也成为编译的一部分 并不真地 您唯一的选择是将子目录设为另一个
  • Flask 路由模式匹配顺序

    鉴于Flask 路由不是从上到下进行模式匹配的 如何处理以下问题 我有以下路线
  • 如何对并行 numpy 数组进行“压缩排序”?

    如果我有两个并行列表并想按第一个列表中元素的顺序对它们进行排序 这非常简单 gt gt gt a 2 3 1 gt gt gt b 4 6 7 gt gt gt a b zip sorted zip a b gt gt gt print a
  • 从 jQuery 调用 WCF 服务库时出现问题

    我通过我的 ASPX 站点公开了一个 WCF 服务库 如下所示 System ServiceModel OperationContract System ServiceModel Web WebInvoke Method POST Requ
  • Java 嵌套泛型类型

    为什么必须使用泛型类型Map gt m Doesn t compile public static void test Map gt m 请注意以下方法
  • 如何在执行tensorflow .fit时修复死内核

    内核是dead执行时model fit train generator epochs 20 但相同的代码可以在另一台电脑上运行 这是一个 Juputer 日志 警告 17 03 05 等待单元格完成时出错 错误 在回复完成之前取消了执行请求
  • PyCharm 运行工具窗口(运行选项卡窗口)丢失

    所以最近我的 PyCharm 缺少通常显示运行 调试结果的运行工具窗口 它现在被 python 控制台和服务取代 这确实令人沮丧 因为它只是显示乱码和类似命令提示符的格式 如何将运行工具窗口返回为主运行 调试窗口 我用红色圆圈圈出了这张图片
  • 如何制作静态链接ELF文件来加载LD_PRELOAD .so

    我有静态链接的二进制文件 ELF 文件 它没有动态段 dymsym 部分 并且不执行 LD PRELOAD 命令等 我如何创建假虚拟动态段来激活动态加载程序并执行 LD PRELOAD 命令 我如何创建假虚拟动态段来激活动态加载程序并执行
  • 是什么导致 FederatedAuthentication.SessionAuthenticationModule 返回 NULL?

    我不知道为什么 但当我尝试运行 ClaimsTransformer 模块时 我的 FederatedAuthentication SessionAuthenticationModule 解析为 NULL 并使我的应用程序崩溃 public
  • 将 PHP 日期发送为 JavaScript 日期格式

    我想将 PHP 服务器时间传递给 JavaScript 文件 PHP代码 date default timezone set Australia Perth echo date r JavaScript get time php funct
  • 触摸 UI 对话框中的默认值 - AEM/CQ

    对于经典 UI 有一个选项可以设置defaultValue对于字段 当用户拖动组件后第一次打开对话框时 会向用户显示该字段 如果用户清除对话框中的值并保存 则在编辑对话框时 字段的值不会再次显示 对于触摸 UI 对话框 找不到等效项defa
  • Typescript 生成带有“#private;”字段的声明 d.ts 文件

    我有一个用 Typescript 编写的库 它分布在 2 个文件中 一个已编译的 ECMAScript 2015 兼容 Javascript 文件index js和一个 Typescript 声明文件index d ts 我的目标是让 Ja
  • System.currentTimeMillis 是否总是返回一个 >= 之前调用的值?

    https docs oracle com javase 6 docs api java lang System html currentTimeMillis says 返回当前时间 以毫秒为单位 请注意 虽然返回值的时间单位是毫秒 但该值