java - 在类中强制使用唯一 ID

标签 java uniqueidentifier

仅出于思考练习的目的,如何为给定类的每个实例强制执行属性的唯一性?

这里的唯一性可以定义为在单个 JVM 上和在单个用户 session 中。

这是 Java 级别的,与数据库无关,主要目的是验证是否发生了冲突。

第一个明显的步骤是在类级别拥有一个静态属性。

  • 随着实例数量的增加,拥有 ArrayList 或其他容器似乎不切实际。
  • 在类级别递增数字计数器似乎是最简单的方法,但 ID 必须始终跟在最后使用的 ID 之后。
  • 强制执行哈希或非数字 ID 可能会出现问题。
  • 并发性可能是个问题。如果两个实例有可能同时获得一个 ID,那么应该避免这种情况。

应该如何解决这个问题?可能已经存在哪些解决方案/方法?

最佳答案

如果您关心性能,这里有一个线程安全、快速(无锁)和无冲突的唯一 ID 生成版本

    public class Test {
        private static AtomicInteger lastId = new AtomicInteger();
        private int id;

        public Test() {
            id = lastId.incrementAndGet();
        }
...

关于java - 在类中强制使用唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15194851/

相关文章:

java - 曼哈顿距离澄清

java - 当方法开始时启动固定延迟调度程序并在完成时停止

Java Swing 绘制矩形

sql-server - 如何检索在Delphi ADO中插入时生成的uniqueidentifier的值?

java - 安装apk后我可以下载android库吗?

java - 如何解决Liferay中对象不是声明类的实例

python - (pandas)如何根据三个相似的数据列创建唯一标识符,其中顺序无关紧要?

Android MediaDrm 唯一 ID

sql-server - 不用作 id 的 rowguid 列的用途是什么?

java - Sql Server数据库中的uniqueidentifier - 如何在Java环境中生成?