【发布时间】:2014-07-21 22:55:03
【问题描述】:
我需要在 Java 中创建一些唯一文件,并且我计划使用 UUID.randomUUID 来生成它们的名称。有没有机会为此发生碰撞?我应该做类似波纹管操作系统的事情吗?我不应该担心这个?
Integer attemptsToGenerateUUID = 1;
while (true) {
UUID fileUUID = UUID.randomUUID();
if (fileDoesNotExistwith this UUID name) {
save file;
break;
}
attemptsToGenerateUUID += 1;
if (attemptsToGenerateUUID > 64) {
return false;
}
}
【问题讨论】:
-
我发现总是有可能发生碰撞。我只是想知道在我的情况下是否值得实施这种“故障安全”,所以我至少尝试几次以获得一个唯一的名称,以防发生冲突。
-
投反对票。答案在侧边栏中。完成后作为副本关闭。
-
从透视角度来看——流星更有可能撞击运行程序的计算机,将其炸毁,然后导致 UUID 发生碰撞。因此,如果您想要一个 100% 的防故障程序,您应该在开始研究处理 UUID 冲突之前解决流星防御问题。
-
@gbtimmon 这已经发生了 - nytimes.com/2021/10/14/world/canada/meteorite-bed.html