2014-07-21 10 views
16

Tôi cần tạo một số tệp đơn nhất trong Java và tôi định sử dụng UUID.randomUUID để tạo tên của chúng. Có cơ hội nào để có một vụ va chạm cho việc này không? Tôi có nên làm một cái gì đó như os dưới đây tôi không nên lo lắng về điều này?Cơ hội gặp va chạm Java UUID.randomUUID lớn đến mức nào?

Integer attemptsToGenerateUUID = 1; 

while (true) { 
    UUID fileUUID = UUID.randomUUID(); 

    if (fileDoesNotExistwith this UUID name) { 
     save file; 
     break; 
    } 

    attemptsToGenerateUUID += 1; 

    if (attemptsToGenerateUUID > 64) { 
     return false; 
    } 
} 
+4

Vì vậy, bạn đã nghiên cứu hoàn toàn điều này rồi, đúng không? – djechlin

+0

Tôi đã thấy luôn có khả năng xảy ra va chạm. Tôi chỉ tự hỏi trong trường hợp của tôi là nó có giá trị để thực hiện điều này "failsafe" vì vậy tôi ít nhất là cố gắng một vài lần để có được một tên duy nhất, chỉ trong trường hợp của một vụ va chạm. – daniels

+1

Downvote. Câu trả lời nằm ở thanh bên. Đóng dưới dạng trùng lặp khi bạn hoàn tất. – djechlin

Trả lời

44

Theo wikipedia, liên quan đến khả năng nhân bản trong UUIDs ngẫu nhiên:

Chỉ sau khi tạo ra 1 tỷ UUIDs mỗi giây cho 100 năm tới, xác suất của việc tạo ra chỉ là một trùng lặp sẽ vào khoảng 50%. Hoặc, để đặt nó theo một cách khác, xác suất của một bản sao sẽ là khoảng 50% nếu mỗi người trên trái đất sở hữu 600 triệu UUID.

Tôi đoán cùng một lý do áp dụng cho việc triển khai UUID của Java. Vì vậy, không, bạn không nên lo lắng về điều này.

Các vấn đề liên quan