Generowanie globalnie unikalnego identyfikatora w Javie

Streszczenie: Zajmuję się tworzeniem trwałej aplikacji internetowej Java i muszę się upewnić, że wszystkie zasoby, które utrzymuję, mają globalnie unikalne identyfikatory, aby zapobiec duplikatom.

Drobnym drukiem:

Nie używam RDBMS, więc nie mam żadnych generatorów sekwencji fantazyjnych (takich jak ten dostarczony przez Oracle)Chciałbym, żeby był szybki, najlepiej w pamięci - wolałbym nie otwierać pliku i nie zwiększać wartościMusi być bezpieczny dla wątków (przewiduję, że tylko jedna wirtualna maszyna Java będzie musiała generować identyfikatory)Konieczne jest zachowanie spójności między instancjami JVM. Jeśli serwer wyłącza się i uruchamia, generator ID nie powinien ponownie generować tych samych identyfikatorów, które wygenerował w poprzednich instancjach (a przynajmniej szansa musi być naprawdę, bardzo mała - przewiduję wiele milionów wskazanych zasobów)Widziałem przykłady w unikalnym artykule wzorca identyfikatora EJB. Nie będą działać dla mnie (wolę nie polegać wyłącznie na System.currentTimeMillis (), ponieważ będziemy utrzymywać wiele zasobów na milisekundę).Spojrzałem na odpowiedzi zaproponowane wto pytanie. Martwię się o to, jaka jest szansa, że ​​z czasem otrzymam duplikat ID? Jestem zaintrygowany sugestią użyciajava.util.UUID dlaUUID, ale ponownie, szanse na duplikat muszą być nieskończenie małe.Używam JDK6

questionAnswers(6)

yourAnswerToTheQuestion