Plan 1:
S'il n'y a pas de concurrence et que le numéro de commande n'est généré que dans un seul thread, puisque le programme est exécuté séquentiellement, les horodatages de génération de différents ordres sont normalement différents. Par conséquent, l'horodatage + nombre aléatoire (ou nombre d'auto-incrément) peut être utilisé pour distinguer chaque ordre. Si la concurrence existe et que le numéro de commande est généré par plusieurs threads dans un processus, le numéro de commande peut être garanti unique en ajoutant l'ID de thread au numéro de séquence. S'il y a de la concurrence et que le numéro de commande est généré par plusieurs processus dans le même hôte, le numéro de commande peut être garanti pour être unique en ajoutant l'ID de processus au numéro de séquence. S'il y a de la concurrence et que le numéro de commande est généré par différents hôtes, le numéro qui peut distinguer l'hôte, tel que l'adresse MAC, l'adresse IP ou le numéro de série CPU, peut garantir que le numéro de commande est unique au numéro de série.
Plan 2:
Timestamp + ID utilisateur + plusieurs nombres aléatoires + verrouillage optimiste.
Plan 3:
Utilisez un incrément Redis atomique pour construire un cluster à haute disponibilité.
Solution 4 (numéros non pure):
Java est livré avec UUID.
Code de cas
Java obtient un identifiant de fil
Thread.currentThread (). GetID ()
Java obtient un identifiant de processus
// Obtenez le nom représentant la machine virtuelle Java en cours d'exécution. String name = ManagementFactory.getRuntiMemXBean (). GetName (); System.out.println (nom); // Get pid String pid = name.split ("@") [0]; System.out.println ("PID est:" + pid);Obtenez l'adresse MAC par Java
InetAddress ia = InetAddress.getLocalHost (); BYTE [] Mac = NetworkInterface.getByinetAddress (IA) .GethardWareaddress (); String macstr = dataTypeConverter.printhexbinary (mac);
Résumer
Ce qui précède est la seule solution pour Java Web à obtenir la génération de numéros de commande en haute concurrence et à placer Java Web. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!