Я использую UUID.randomUUID(). ToString(), чтобы добавить уникальное значение в строку, которая, в конечном счете, хранящейся в базе данных, и имеет уникальное ограничение на немже UUID генерируется в многопоточном приложении
Но поскольку мое приложение многопоточное, выполнение происходит одновременно с генерацией UUID, и в конечном итоге тот же UUID добавляется к строке, а персистенция терпит неудачу.
Есть ли лучший способ генерации случайной строки, то есть отказоустойчивого метода.
Я попробовал отладку, и когда я приостановил другие потоки и отпустил их один за другим, тогда он работал нормально.
В настоящее время я использую следующий код, чтобы сделать его более случайным, но мне не нравится этот подход.
Random r = new Random();
List<Integer> uniqueNUmbers = new ArrayList<>();
for (int i=0;i<10;i++) {
int x=r.nextInt(9999);
while (uniqueNumbers.contains(x))
x=r.nextInt(9999);
uniqueNumbers.add(x);
}
String string = String.format("%04d", uniqueNumbers.get(0));
string = uuid + string;
Но это как взломанный код. И мне это не нравится.
Кто-нибудь знает метод отказоустойчивости для фактической передачи случайной строки.