当前位置: 代码迷 >> J2SE >> UUID 重复?解决思路
  详细解决方案

UUID 重复?解决思路

热度:414   发布时间:2016-04-23 21:06:56.0
UUID 重复?


import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
public class UUID {
public static void main(String[] args) {
final int x = Integer.parseInt(args[0]);
final int y = Integer.parseInt(args[1]);
final String[][] uuids = new String[x][y];
final int[] ks = new int[x];
for(int j = 0; j < x; j++) {
final int k = j;
new Thread(new Runnable(){
public void run() {
for(int i = 0; i < y ; i++) {
uuids[k][i] = getUUID();
}
System.out.println(k + "  Over.");
ks[k] = 1;
}

}).start();
}
while(true) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
boolean flag = true;
for(int i = 0; i < ks.length; i++) {
if(ks[i] == 0) {
flag = false;
}
}
if(flag) {
break;
}
}
System.out.println("Process UUID");
HashSet<String> set = new HashSet<String>(uuids.length);
List<String> list = new ArrayList<String>();
for(int i = 0; i < uuids.length; i++) {
for(int j = 0; j < uuids[i].length; j++) {
if(!set.add(uuids[i][j])) {
list.add(i + "#" + j + "#" + uuids[i][j]);
System.out.print(uuids[i][j] + "|   ");
} else {
System.out.print(uuids[i][j] + "|   ");
}
}
System.out.println();
}
System.out.println("Process UUID ["+set.size()+"]");
System.out.println(list);
}
public static String getUUID() {
String s = java.util.UUID.randomUUID().toString();
return s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18)
+ s.substring(19, 23) + s.substring(24);
}

}

执行 java -Xms512m -Xmx512m UUID 10 10 有可能会重复,

5  Over.
0  Over.
8  Over.
4  Over.
6  Over.
9  Over.
2  Over.
3  Over.
7  Over.
1  Over.
Process UUID
111a259c52fb4ea7b313fe33cd2b1a56|   def2c8f802e546b49594498809349d9f|   89c3b3bb1772471d9275f763cc82a655|   e1af69b5744d4bf69b19b3425c5ac355|   a46218ea0f574444b3c8af738e6d05cc|   d8df2b2741b24d3ca672d7f9bc78e3c1|   4223d0ca2bf944bb8d64a7867e150dd3|   023deb9163784ccebb0703a778fa03eb|   96763ee8c91c45b1a21435c1031dcbde|   033070ce7d2f4614b700a1ffaffaaa3e|
333bf61aa8634e47b2d1f7df150d979f|   ec2d4226cf3c4299aad3e97f246f0142|   073aed8d9d8748668c377875bf7e9a6e|   fe87c53421cc4505b75dacc3b7928fa5|   1c9a6af7699d433ea4652c3514c4cfc6|   f0d74353fa8946a19803609f06d32865|   9ccda1bce1ec4de08751a764f75bc8b0|   e98cac7671ab4e1fa345cb5ebbf5f2da|   324089828b4a419e9c2487f2e2ea4f24|   a6ec9e64bae24ea0a710d58e522b4de2|
cf2bf25509014e52982807c5a8d9c5d4|   cdb6b5324f854b9d83d9c13c132e77f1|   2e1744970d2c4c3484743b3e0a147e99|   33009f87cde14e12ad59687acf7ec9e7|   e4c133edc254472dba68853a50428d79|   89c833fef714490ea3f381843ae2e551|   8c1ea95e616f477383e4d7176b759da0|   f4459e074ade466683433d1dc594fc5a|   11ef5a7199f24372ad88db69d68faac8|   df197fdee0d74602809e76b965ebeb7f|
c4c2a850be104db9b7d41160534938c5|   f2bb56c27f884cfcb31e218de6d6e4b2|   1bd40a566ca94f0b804d7c9531174874|   be9dac6ce5ed44868044d1064fc56dc8|   d5c1e4c19d1d41169e4d660e90a537b6|   85ba87dc52af4b648d671da289f1bfb9|   19229b03f5974c7c93918979029d41fd|   eed6b3f6a8ea4e84b14d29dc3733523c|   86b962d554094bddafe3f271fe0b63a4|   59ebdc9463fd4ba0ad8ed7c1f36632f9|
6654487027d34877af2baedefa90f59a|   f0af4400bae34ee9b3aaa26f5eb5b7d1|   771d748b63ac4e2c9ac822199c984667|   3d8f4443720245d9a2b4f822ad8ae5d0|   513d79eeb16b461ca1ec549fd54ec709|   6fc2a02fc70c4f15baa0316d4901d74d|   fea0ef82baf442e4bd2931e002e95dae|   200cd15ac49446e0abfec9d5526cd5b6|   48e2b7118cfe4f96b2f513b9ba9871bb|   a167bb66880d4ce38779a64439255673|
9b5c9f50fdfa4414b1180a0bbed9b34f|   43156bc3897a4156a3d2e9d2a73b6677|   510d51eff3204412af4f2b2b18030aba|   0dfe8dca76464a7ab1705691df9e8370|   81da5ae024244fdaacc1b92104956f4e|   dd2c42697c924b47a23099db3b1afc35|   aab508823d174939b9c48030c25536d7|   cea7d8f6700c424ea7ab03d923147c8a|   8b69c816c1e547769341cde9c8d78453|   6ee86e999ab04c9d947bf4f722474b0e|
  相关解决方案