Generieren eines global eindeutigen Bezeichners in Java

Zusammenfassung: Ich entwickle eine beständige Java-Webanwendung und muss sicherstellen, dass alle von mir beständigen Ressourcen global eindeutige Bezeichner aufweisen, um Duplikate zu vermeiden.

Das Kleingedruckte:

Ich verwende kein RDBMS, daher habe ich keine ausgefallenen Sequenzgeneratoren (wie den von Oracle bereitgestellten).Ich möchte, dass es schnell ist, am besten alles im Speicher - ich möchte lieber keine Datei öffnen und einen Wert erhöhenEs muss threadsicher sein (ich gehe davon aus, dass jeweils nur eine JVM IDs generieren muss)Die Instanziierungen der JVM müssen konsistent sein. Wenn der Server heruntergefahren und gestartet wird, sollte der ID-Generator nicht dieselben IDs erneut generieren, die er in früheren Instanziierungen generiert hat (oder zumindest muss die Chance wirklich sehr, sehr gering sein - ich erwarte viele Millionen von vorhandenen Ressourcen).Ich habe die Beispiele im EJB Unique ID Pattern-Artikel gesehen. Sie funktionieren bei mir nicht (ich würde mich lieber nicht nur auf System.currentTimeMillis () verlassen, da wir mehrere Ressourcen pro Millisekunde beibehalten).Ich habe mir die in vorgeschlagenen Antworten angesehendiese Frage. Meine Sorge ist, wie groß ist die Wahrscheinlichkeit, dass ich mit der Zeit eine doppelte ID bekomme? Ich bin fasziniert von dem Vorschlag, ihn zu verwendenjava.util.UUID Für einUUIDAber auch hier muss die Wahrscheinlichkeit eines Duplikats unendlich gering sein.Ich benutze JDK6

Antworten auf die Frage(6)

Ihre Antwort auf die Frage