Generando un identificador único global en Java

Resumen: Estoy desarrollando una aplicación web Java persistente, y debo asegurarme de que todos los recursos que conservo tengan identificadores únicos a nivel mundial para evitar duplicados.

La letra pequeña:

No estoy usando un RDBMS, por lo que no tengo generadores de secuencias sofisticados (como el que proporciona Oracle)Me gustaría que fuera rápido, preferiblemente todo en la memoria; preferiría no tener que abrir un archivo e incrementar algún valorDebe ser seguro para la ejecución de subprocesos (estoy anticipando que solo una JVM tendrá que generar ID a la vez)Es necesario que haya coherencia en todas las instancias de la JVM. Si el servidor se apaga y se inicia, el generador de ID no debería volver a generar las mismas ID que generó en las instancias anteriores (o al menos la oportunidad debe ser realmente muy reducida, anticipo muchos millones de recursos preseleccionados)He visto los ejemplos en el artículo de patrón de ID único de EJB. No funcionarán para mí (preferiría no depender únicamente de System.currentTimeMillis () porque estaremos persistiendo múltiples recursos por milisegundo).He mirado las respuestas propuestas enesta pregunta. Mi preocupación acerca de ellos es, ¿cuál es la probabilidad de que obtenga una identificación duplicada a lo largo del tiempo? Me intriga la sugerencia de usar.java.utilIDID paraUUIDPero, una vez más, las posibilidades de un duplicado deben ser infinitesimalmente pequeñas.Estoy usando JDK6

Respuestas a la pregunta(6)

Su respuesta a la pregunta