gpt4 book ai didi

java - 如何在 Java 中创建 64 位唯一整数

转载 作者:行者123 更新时间:2023-12-04 15:54:47 29 4
gpt4 key购买 nike

我需要在 Java 中创建一个 64 位唯一整数,以降低冲突几率。该系统不是分布式的,因此不同计算机之间的冲突不是问题。

有什么办法,我们可以在 Java 中创建一个始终唯一的 64 位整数?

截至目前,我正在使用 -

long number = System.nanoTime();

这是在 Java 中生成 64 位唯一整数的正确方法还是我可以尝试其他方法?

更新:-

这样做怎么样?这会是独一无二的吗?

UUID number = UUID.randomUUID();
long uniqueNumber = number.timestamp();

最佳答案

如果您需要数字在一个进程中是唯一的,并且在重新启动之间保持稳健,您可以使用一个简单的 AtomicLong 和一个计时器。

private static final AtomicLong TS = new AtomicLong();
public static long getUniqueTimestamp() {
long micros = System.currentTimeMillis() * 1000;
for ( ; ; ) {
long value = TS.get();
if (micros <= value)
micros = value + 1;
if (TS.compareAndSet(value, micros))
return micros;
}
}

这将为您提供精确到毫秒的唯一“时间戳”,但每毫秒只能处理 1000 个 ID,而不会超前于实际时间。这在重新启动时工作正常,因为时间会跳过以前的值(再次假设平均每秒少于一百万)

关于java - 如何在 Java 中创建 64 位唯一整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28370747/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com