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

4

6 回答 6

2

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

于 2009-05-04T05:36:48.407 回答
2

引用API odc

public static UUID randomUUID()

用于检索类型 4(伪随机生成)UUID 的静态工厂。UUID 是使用加密强的伪随机数生成器生成的。

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

于 2009-05-04T08:25:25.660 回答
0

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

于 2009-05-06T21:14:11.693 回答
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 -模块/j2me/sun/security/provider/SeedGenerator.java.htm

于 2011-12-13T20:33:58.023 回答
0

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

于 2009-05-04T07:51:44.650 回答
0

如果您在大量数据上附加 5 个字符串,则可能是问题所在。尝试使用 StringBuffer。将 1-2 个以上的字符串连接在一起时会产生惊人的差异,尤其是对于较大的数据集

于 2009-10-30T15:02:06.653 回答