Генерация глобального уникального идентификатора в Java

Резюме: Я разрабатываю постоянное веб-приложение на Java, и мне нужно убедиться, что все сохраняемые ресурсы имеют глобально уникальные идентификаторы для предотвращения дублирования.

Шрифт:

Я не использую СУБД, поэтому у меня нет никаких причудливых генераторов последовательностей (таких как тот, что предоставлен Oracle)Я хотел бы, чтобы это было быстро, желательно все в памяти - я бы предпочел не открывать файл и увеличивать некоторое значениеЭто должно быть потокобезопасным (я ожидаю, что только одна JVM за один раз должна будет генерировать идентификаторы)Должна быть согласованность между экземплярами JVM. Если сервер выключается и запускается, генератор идентификаторов не должен повторно генерировать идентичные идентификаторы, которые он генерировал в предыдущих экземплярах (или, по крайней мере, шанс должен быть очень, очень небольшим - я ожидаю, что миллионы ресурсов будут сохранены)Я видел примеры в статье с шаблоном уникальных идентификаторов EJB. Они не будут работать для меня (я бы предпочел не полагаться исключительно на System.currentTimeMillis (), потому что мы будем сохранять несколько ресурсов в миллисекунду).Я посмотрел на ответы, предложенные вэтот вопрос, Я беспокоюсь о них, какова вероятность того, что со временем я получу дубликат ID? Я заинтригован предложением использоватьjava.util.UUID дляUUIDно, опять же, шансы дубликата должны быть бесконечно малы.Я использую JDK6

Ответы на вопрос(6)

Ваш ответ на вопрос