Package org.aoju.bus.core.key
Class LongID
java.lang.Object
org.aoju.bus.core.key.LongID
Long类型ID生成器,固定为19位长度 根据当前毫秒数和可选的服务器/实例ID生成唯一的数字ID 适合用作分布式应用程序中的数据库主键
示例:
- LongId lid = new LongId() - 创建一个实例来生成带有服务器为0的ID
- LongId lid = new LongId(123) - 创建一个实例来生成带有服务器为123的ID
- lid.id() - 使用实例上的服务器ID生成ID
有了生成的id,您就可以用它检索信息,无论是否有实例
- LongId.getDate(id) - 从ID中提取时间戳
- LongId.getServerId(id) - 从ID中提取服务器ID
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic longgetCounter(long longId) 从一个长longid获取相同毫秒的计数器 除了调试之外没有什么用处.static DategetDate(long longId) 获取生成LongId的日期/时间static longgetServerId(long longId) 获取生成LongId的服务器/实例ID.longid()生成一个新的ID.
-
Constructor Details
-
LongID
public LongID()使用默认的serverId创建一个新实例: 0 -
LongID
public LongID(long serverId) 为特定的服务器/应用程序实例创建一个新实例 确保每个实例生成一组惟一的id- Parameters:
serverId- 服务器ID
-
-
Method Details
-
getDate
获取生成LongId的日期/时间- Parameters:
longId- 用这个类生成的LongId的数字id- Returns:
- Date对象, 表示生成LongId的时间.
-
getServerId
public static long getServerId(long longId) 获取生成LongId的服务器/实例ID.- Parameters:
longId- 用这个类生成的LongId的数字id- Returns:
- 生成LongId的服务器/实例的数字ID
-
getCounter
public static long getCounter(long longId) 从一个长longid获取相同毫秒的计数器 除了调试之外没有什么用处.- Parameters:
longId- 用这个类生成的LongId的数字id- Returns:
- 数字计数器
-
id
public long id()生成一个新的ID. Synchronized,这样每个线程将等待前一个线程完成,允许我们 当两个线程在同一毫秒内碰撞时,维护状态并保证唯一的ID 如果我们在一毫秒内达到计数器限制,我们将睡眠一毫秒并重新开始- Returns:
- ID 适合用作数据库键的唯一标识
-