Java UUID.randomUUID冲突的机会有多大?


问题内容

我需要在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年中每秒生成10亿个UUID之后,仅创建一个副本的可能性就约为50%。或者,换句话说,如果地球上的每个人都拥有6亿个UUID,则重复一次的概率约为50%。

我想同样的道理也适用于Java的UUID实现。因此,不,您不必为此担心。