代码之家  ›  专栏  ›  技术社区  ›  ssk

Android中的UUID.randomUUID冲突

  •  1
  • ssk  · 技术社区  · 9 年前

    我知道UUID.randomUUID基本上是好的: how good is java's UUID.randomUUID?

    有人在Android上遇到过UUID.randomUUID问题吗?因为Android使用Dalvik VM。

    我无法再现碰撞。然而,以下代码是可疑的(基于我的Production报告),在两个不同的进程上运行时可能会导致冲突(两个应用程序具有相同的代码和不同的包,例如免费应用程序与专业应用程序)?

    private static final String PREFIX = Long.toString(UUID.randomUUID().getLeastSignificantBits());
    

    任何想法/经验都会有所帮助!

    1 回复  |  直到 7 年前
        1
  •  1
  •   JFPicard    9 年前

    正如我所见, http://docs.oracle.com/javase/7/docs/api/java/util/UUID.html 最低有效数字包含三个字段:

     0xC000000000000000 variant
     0x3FFF000000000000 clock_seq
     0x0000FFFFFFFFFFFF node
    

    通过不使用所有UUID,您增加了发生冲突的机会。把所有这些都像这样: private static final String PREFIX = UUID.randomUUID().toString();

    这样,您将减少碰撞的机会。