在Java中创建一个唯一的时间戳
发布时间:2020-08-03 05:16:33 所属栏目:Java 来源:互联网
导读:我需要在 Java中创建一个保证在该特定VM实例中是唯一的时间戳(以毫秒为单位).即需要一些方法来抑制System.currentTimeMillis()的吞吐量,以便每ms最多返回一个结果.关于如何实现的任何想法? 这将尽可能接近目前的时间,没有重复. private static final AtomicL
我需要在 Java中创建一个保证在该特定VM实例中是唯一的时间戳(以毫秒为单位).即需要一些方法来抑制System.currentTimeMillis()的吞吐量,以便每ms最多返回一个结果.关于如何实现的任何想法? 解决方法这将尽可能接近目前的时间,没有重复.private static final AtomicLong LAST_TIME_MS = new AtomicLong(); public static long uniqueCurrentTimeMS() { long now = System.currentTimeMillis(); while(true) { long lastTime = LAST_TIME_MS.get(); if (lastTime >= now) now = lastTime+1; if (LAST_TIME_MS.compareAndSet(lastTime,now)) return now; } } 避免每毫秒限制一个id的一种方法是使用微秒时间戳.即将currentTimeMS乘以1000.这将允许每秒1000个ID. 注意:如果时间倒退,例如由于NTP校正,时间将仅在每次调用1毫秒进行,直到时间赶上. (编辑:鲜蔬坊站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 是否可能定义一个jax-rs服务接口,与其实现分离(使用
- java – Spring 3错误消息的含义和解决方案“建议使用getRe
- java – 关闭Spring引导应用程序时无法注销数据源JMX MBean
- JavaFX – 如何创建SnapShot /(invisble)WebView的屏幕截图
- java – EJB容器是否驻留在所有应用程序服务器中. EJB容器深
- 在Java中反序列化不可信数据的安全影响是什么?
- java – 无法在Play 2中使用多个ebean数据库
- 在java List中进行模糊查询的实现方法
- java – 布局预览渲染问题:不支持PorterDuff颜色过滤器
- java按字节截取带有汉字的字符串的解法(推荐)