程序包 tech.riemann.etp
类 IdWorker
java.lang.Object
tech.riemann.etp.IdWorker
- 作者:
- Kerbores(kerbores@riemann.tech)
-
字段概要
字段 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明longnextId()生成下一个ID 本方法通过时间戳、工作ID和序列号的组合来生成唯一的ID 它是线程安全的,确保在多线程环境下可以安全生成ID生成EC专用的唯一ID 该方法通过同步方式确保线程安全,并基于时间戳、workerId和序列号生成一个唯一的ID 当时间戳相同时,会递增序列号;当时间戳回退时,会抛出异常以防止生成重复的ID 如果时间戳相同且序列号达到最大值时,会等待直到时间戳改变
-
字段详细资料
-
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
生成EC专用的唯一ID 该方法通过同步方式确保线程安全,并基于时间戳、workerId和序列号生成一个唯一的ID 当时间戳相同时,会递增序列号;当时间戳回退时,会抛出异常以防止生成重复的ID 如果时间戳相同且序列号达到最大值时,会等待直到时间戳改变- 返回:
- 唯一ID,格式为当前年月加上一个长整型数字
- 抛出:
IllegalStateException- 如果时间戳回退且无法生成新的ID时抛出此异常
-