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可能想访问一些网络
有谁能够帮我?
答案 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