Rencana 1:
Jika tidak ada konkurensi dan nomor pesanan hanya dihasilkan dalam satu utas, maka karena program dieksekusi secara berurutan, perangko waktu generasi dari pesanan yang berbeda biasanya berbeda. Oleh karena itu, stempel waktu + nomor acak (atau angka penderitaan diri) dapat digunakan untuk membedakan setiap pesanan. Jika ada konkurensi dan nomor pesanan dihasilkan oleh beberapa utas dalam suatu proses, nomor pesanan dapat dijamin unik dengan menambahkan ID utas ke nomor urutan. Jika ada konkurensi dan nomor pesanan dihasilkan oleh beberapa proses di host yang sama, nomor pesanan dapat dijamin unik dengan menambahkan ID proses ke nomor urutan. Jika ada konkurensi dan nomor pesanan dihasilkan oleh host yang berbeda, maka nomor yang dapat membedakan host, seperti alamat MAC, alamat IP, atau nomor seri CPU, dapat memastikan bahwa nomor pesanan unik untuk nomor seri.
Rencana 2:
Timestamp + ID Pengguna + Beberapa Angka Acak + Kunci Optimis.
Rencana 3:
Gunakan Redis Atomic Increment untuk membangun kluster ketersediaan tinggi.
SOLUSI 4 (NON-PURE NOMOR):
Java dilengkapi dengan UUID.
Kode kasus
Java mendapat ID utas
Thread.currentThread (). GetId ()
Java mendapatkan id proses
// Dapatkan nama yang mewakili mesin virtual Java yang sedang berjalan. String name = ManagementFactory.getRunTimemXBean (). GetName (); System.out.println (nama); // Dapatkan PID String pid = name.split ("@") [0]; System.out.println ("PID IS:" + PID);Dapatkan Alamat Mac oleh Java
Inetaddress ia = inetaddress.getLocalhost (); byte [] mac = networkInterface.getByInetAddress (IA) .getHardWareAddress (); String macstr = DataTypeConverter.printhexbinary (Mac);
Meringkaskan
Di atas adalah satu -satunya solusi bagi Java Web untuk mencapai pembuatan angka pesanan dalam konkurensi tinggi dan mendistribusikan penempatan Java Web. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!