public class SnowFlakeId14 extends Object implements KenGen
| Modifier and Type | Field and Description |
|---|---|
private long |
lastTimestamp
上次生成ID的时间截
|
private long |
maxWorkerId
支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数)
|
private long |
sequence
毫秒内序列(0~4095)
|
private long |
sequenceBits
序列在id中占的位数
|
private long |
sequenceMask
生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095)
|
private long |
startTime
开始时间截 (本次时间戳为:Thu Nov 04 2010 09:42:54 GMT+0800 (中国标准时间)----1288834974657L---1656543015264587776--19 )
|
private long |
timestampLeftShift
时间截向左移22位(10+12)
|
private long |
workerId
工作机器ID(0~1024)
|
private long |
workerIdBits
机器id所占的位数
|
private long |
workerIdShift
机器ID向左移12位
|
| Constructor and Description |
|---|
SnowFlakeId14(long workerId)
构造函数
|
| Modifier and Type | Method and Description |
|---|---|
long |
nextId()
获得下一个ID (该方法是线程安全的)
|
protected long |
tilNextMillis(long lastTimestamp)
阻塞到下一个毫秒,直到获得新的时间戳
|
protected long |
timeGen()
返回以毫秒为单位的当前时间
|
private final long startTime
private final long workerIdBits
private final long maxWorkerId
private final long sequenceBits
private final long workerIdShift
private final long timestampLeftShift
private final long sequenceMask
private long workerId
private long sequence
private long lastTimestamp
public SnowFlakeId14(long workerId)
workerId - 工作ID (0~1024)public long nextId()
protected long tilNextMillis(long lastTimestamp)
lastTimestamp - 上次生成ID的时间截protected long timeGen()
Copyright © 2024. All rights reserved.