在Java中创建一个唯一的时间戳
发布时间:2020-08-04 03:01:40 所属栏目: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毫秒进行,直到时间赶上. (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读
