Class LongID

java.lang.Object
org.aoju.bus.core.key.LongID

public class LongID extends Object
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
    Constructor
    Description
    使用默认的serverId创建一个新实例: 0
    LongID(long serverId)
    为特定的服务器/应用程序实例创建一个新实例 确保每个实例生成一组惟一的id
  • Method Summary

    Modifier and Type
    Method
    Description
    static long
    getCounter(long longId)
    从一个长longid获取相同毫秒的计数器 除了调试之外没有什么用处.
    static Date
    getDate(long longId)
    获取生成LongId的日期/时间
    static long
    getServerId(long longId)
    获取生成LongId的服务器/实例ID.
    long
    id()
    生成一个新的ID.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • LongID

      public LongID()
      使用默认的serverId创建一个新实例: 0
    • LongID

      public LongID(long serverId)
      为特定的服务器/应用程序实例创建一个新实例 确保每个实例生成一组惟一的id
      Parameters:
      serverId - 服务器ID
  • Method Details

    • getDate

      public static Date getDate(long longId)
      获取生成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 适合用作数据库键的唯一标识