我需要在 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;
}
}
根据维基百科 https://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates,关于随机 UUID 中重复的概率:
只有在接下来的 100 年中每秒生成 10 亿个 UUID 后,仅创建一个重复项的概率才会约为 50%。或者,换句话来说,如果地球上每个人都拥有 6 亿个 UUID,那么出现重复的概率约为 50%。
我想同样的推理也适用于 Java 的 UUID 实现。所以不,你不应该担心这个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)