java中时间戳精确到毫秒加uuid生成long类型的唯一主键id
时间: 2024-09-24 13:11:08 浏览: 83
Java中生成唯一ID的方法示例
5星 · 资源好评率100%
在Java中,如果你想结合当前时间戳的毫秒级精度和UUID(Universally Unique Identifier)来生成一个唯一的长整型ID作为主键,可以这样做:
首先,获取当前时间的毫秒值,并将其转换为`long`类型:
```java
long timestamp = System.currentTimeMillis();
```
接着,从UUID中获取高16位(即8字节)的数据,同样转换为`long`:
```java
long uuidHigh = uuid.getMostSignificantBits() & 0xFFFFFFFFL; // 取最高16位
```
然后将这两个值合并:
```java
long uniqueId = timestamp * 1000 + uuidHigh; // 假设UUID的高16位已经足够独一无二
```
这里的乘以1000是为了保持时间戳的毫秒级别,同时让UUID的贡献更为显著,因为UUID的值通常比毫秒更难以预测。
注意,这种方法并不能保证绝对的唯一性,因为两个事件几乎在同一时刻发生并且产生的UUID都恰好是最高的16位一致的情况下,可能会有冲突。然而,在实际应用中,这种概率极低,可以满足大部分需求。
阅读全文