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