J'utilise l'UUID.RANDOMUUID (). TOSTRING () Pour ajouter une valeur unique à une chaîne qui est finalement stockée dans la base de données et a une contrainte unique sur celle-ci
mais parce que ma demande est multi-filetée de l'exécution. arrive au même moment de la génération UUID et, finalement, le même uuid est annexé à la chaîne et à la persistance échoue. P>
Y a-t-il un meilleur moyen de générer une chaîne aléatoire, c'est-à-dire une méthode sans échec. P>
J'ai essayé de déboguer et quand j'ai fait pair les autres threads et que je les laisse aller un à un, alors cela fonctionnait bien. P>
J'utilise actuellement le code suivant pour le rendre plus aléatoire mais je n'aime pas cette approche. P>
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;
3 Réponses :
Vous pouvez synchroniser la méthode de génération UUID et / ou vous pouvez prévenir la piscine UUID et générer plus d'identificateurs dans un fil lorsque la piscine commence à épuiser. P>
Vous pouvez essayer quelque chose comme celui-ci
Peut-être que cet exemple peut aider quelqu'un à l'avenir:
UUID uuid = UuidCreator.getRandomBased();