UUID在Java中的两种产生方式

来源:互联网 发布:淘宝哪有做假病历的 编辑:程序博客网 时间:2024/04/29 16:11

需求:

集群环境下需要产生uuid,uuid的作用不言而喻

转发请注明出处:http://snv.iteye.com/

环境:

Xml代码  收藏代码
  1. <dependency>  
  2.     <groupId>org.safehaus.jug</groupId>  
  3.     <artifactId>jug</artifactId>  
  4.     <version>2.0.0</version>  
  5.      <classifier>asl</classifier>  
  6. </dependency>    

或:

Xml代码  收藏代码
  1. <dependency>  
  2.     <groupId>org.safehaus.jug</groupId>  
  3.     <artifactId>jug</artifactId>  
  4.     <version>2.0.0</version>  
  5.     <classifier>lgpl</classifier>  
  6. </dependency>  

两个的区分只是license不一样

基于JUG实现:

Java代码  收藏代码
  1. UUIDGenerator generator=UUIDGenerator.getInstance();  
  2. UUID uuid=generator.generateRandomBasedUUID();  
  3. System.out.println(uuid.toString());  
  4. uuid=generator.generateTimeBasedUUID();  
  5. System.out.println(uuid.toString());  

基于JDK的实现:

Java代码  收藏代码
  1. String uuidStr=java.util.UUID.randomUUID().toString();  
  2. System.out.println(uuidStr);  

PS:

两种方式我单机测试jdk的性能高不知道各位看官有什么看法,测试如下:

Java代码  收藏代码
  1. public static void cost() throws Exception {  
  2.     UUIDGenerator generator=UUIDGenerator.getInstance();  
  3.     final int size=10000000;  
  4.     long now=System.currentTimeMillis();  
  5.     for (int i = 0; i < size; i++) {  
  6.         UUID uuid=generator.generateRandomBasedUUID();  
  7.         String uidStr=(uuid.toString());  
  8.     }  
  9.     long time1=System.currentTimeMillis();  
  10.     for (int i = 0; i < size; i++) {  
  11.         String uidStr=java.util.UUID.randomUUID().toString();  
  12.     }  
  13.     long end=System.currentTimeMillis();  
  14.     System.out.println("jug cost:"+(time1-now));  
  15.     System.out.println("jdk cost:"+(end-time1));  
  16. }  

结果:

Java代码  收藏代码
  1. jug cost:11209  
  2. jdk cost:10114 
0 0