程序包 tech.riemann.etp

类 IdWorker

java.lang.Object
tech.riemann.etp.IdWorker

public class IdWorker extends Object
作者:
Kerbores(kerbores@riemann.tech)
  • 字段概要

    字段
    修饰符和类型
    字段
    说明
    static final long
     
    static final long
     
  • 构造器概要

    构造器
    构造器
    说明
    IdWorker(long workerId)
     
  • 方法概要

    修饰符和类型
    方法
    说明
    long
    生成下一个ID 本方法通过时间戳、工作ID和序列号的组合来生成唯一的ID 它是线程安全的,确保在多线程环境下可以安全生成ID
    生成EC专用的唯一ID 该方法通过同步方式确保线程安全,并基于时间戳、workerId和序列号生成一个唯一的ID 当时间戳相同时,会递增序列号;当时间戳回退时,会抛出异常以防止生成重复的ID 如果时间戳相同且序列号达到最大值时,会等待直到时间戳改变

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 字段详细资料

    • MAX_WORKER_ID

      public static final long MAX_WORKER_ID
      另请参阅:
    • SEQUENCE_MASK

      public static final long SEQUENCE_MASK
      另请参阅:
  • 构造器详细资料

    • IdWorker

      public IdWorker(long workerId)
  • 方法详细资料

    • nextId

      public long nextId()
      生成下一个ID 本方法通过时间戳、工作ID和序列号的组合来生成唯一的ID 它是线程安全的,确保在多线程环境下可以安全生成ID
      返回:
      生成的下一个ID
      抛出:
      IllegalStateException - 如果时钟回退,即当前时间戳小于上一个时间戳,则抛出异常
    • nextIdForEc

      public String nextIdForEc()
      生成EC专用的唯一ID 该方法通过同步方式确保线程安全,并基于时间戳、workerId和序列号生成一个唯一的ID 当时间戳相同时,会递增序列号;当时间戳回退时,会抛出异常以防止生成重复的ID 如果时间戳相同且序列号达到最大值时,会等待直到时间戳改变
      返回:
      唯一ID,格式为当前年月加上一个长整型数字
      抛出:
      IllegalStateException - 如果时间戳回退且无法生成新的ID时抛出此异常