为什么我的UUID使用太多时间?

时间:2009-05-04 04:58:51

标签: java uuid jdk1.5

String s = UUID.randomUUID().toString(); 
return s.substring(0,8) + s.substring(9,13) + s.substring(14,18) +
       s.substring(19,23) + s.substring(24); 

我使用JDK1.5的UUID,但是当我连接/断开网络时,它会占用太多时间。
我认为UUID可能想访问一些网络 有谁能够帮我?

6 个答案:

答案 0 :(得分:2)

UUID生成在本地完成,不需要任何活动网络连接。

答案 1 :(得分:2)

引用the API odc

public static UUID randomUUID()
     

静态工厂检索类型4(伪随机生成的)UUID。   使用a生成UUID   密码学上强伪随机   数字生成器。

您的延迟可能是由加密强RNG的初始化引起的 - 这需要一些时间,甚至可能依赖于网络连接的存在作为熵源。但是,这应该在JVM的运行时期间仅发生一次。但是,我没有看到解决这个问题的方法。

答案 2 :(得分:0)

UUID http://java.sun.com/j2se/1.5.0/docs/api/java/util/UUID.html的javadoc提供了有关如何生成UUID的一些很好的信息。它使用时间和时钟频率生成UUID。像sharptooth所说,不需要网络接口。是否可能有其他并发进程正在运行,可能导致此问题?

答案 3 :(得分:0)

这些s.substring调用的目的是什么?看起来你正在返回原始字符串。

答案 4 :(得分:0)

如果你在一大堆数据上附加5个字符串,那可能就是问题所在。尝试使用StringBuffer。将1-2个以上的字符串连接在一起时可能会产生很大的差异,特别是对于较大的数据集

答案 5 :(得分:0)

对于旧版本的Java(可能是6及更早版本?),Random中存在一个错误,导致它遍历整个临时目录。我们已经看到在NVIDIA的一些极其糟糕的构建机器上种子生成需要10分钟。您可能想要检查临时目录的大小。

比较:http://www.docjar.com/html/api/sun/security/provider/SeedGenerator.java.html 致:http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules/j2me/sun/security/provider/SeedGenerator.java.htm