我需要在Java中创建一些唯一文件,我计划使用UUID。随机uid来生成它们的名字。这有可能发生碰撞吗?我是否应该做一些类似咆哮的事情,这样我就不用担心这个了?
Integer attemptsToGenerateUUID = 1;
while (true) {
UUID fileUUID = UUID.randomUUID();
if (fileDoesNotExistwith this UUID name) {
save file;
break;
}
attemptsToGenerateUUID += 1;
if (attemptsToGenerateUUID > 64) {
return false;
}
}
根据wikipedia,关于随机uuid中重复的概率:
只有在接下来的100年里每秒产生10亿个uuid之后,只产生一个副本的概率才会是50%左右。或者,换句话说,如果地球上每个人都拥有6亿个uuid,那么一个重复的概率将是50%左右。
我想同样的推理也适用于Java的UUID实现。所以不用担心这个