public class Snowflake extends Object
| 限定符和类型 | 字段和说明 |
|---|---|
private long |
dataCenterId |
private static long |
dataCenterIdBits |
private static long |
dataCenterIdMask |
private static long |
dataCenterIdShift |
private static long |
epoch |
private long |
lastTimestamp |
private static Random |
RANDOM
sequence随机种子(兼容低并发下, sequence均为0的情况)
|
private long |
sequence |
private static long |
sequenceBits |
private static long |
sequenceMask |
private static long |
timestampShift |
private long |
workerId |
private static long |
workerIdBits |
private static long |
workerIdMask |
private static long |
workerIdShift |
| 构造器和说明 |
|---|
Snowflake(long dataCenterId,
long workerId,
long projectStartEpoch)
构造函数
|
| 限定符和类型 | 方法和说明 |
|---|---|
long |
nextId() |
private long |
tilNextMillis(long lastTimestamp) |
protected boolean |
timeBackwardsCallback(long timestamp,
long lastTimestamp)
default callback
可以自定义在子类中修改, 只需结果为true即可生成nextId()
|
private long |
timestamp() |
private static long epoch
private static final long workerIdBits
private static final long dataCenterIdBits
private static final long sequenceBits
private static final long workerIdShift
private static final long dataCenterIdShift
private static final long timestampShift
private static final long sequenceMask
private static final long workerIdMask
private static final long dataCenterIdMask
private final long workerId
private final long dataCenterId
private long sequence
private long lastTimestamp
private static final Random RANDOM
public Snowflake(long dataCenterId,
long workerId,
long projectStartEpoch)
dataCenterId - 可以使用ip地址来标识workerId - machineID, 最好是对工作的机器有一个统一的编号, 使用这个编号作为工作IDprojectStartEpoch - 设置为项目开始的时候的时间戳, 则可以在此时间之后使用69年不会有重复IDpublic long nextId()
private long tilNextMillis(long lastTimestamp)
private long timestamp()
protected boolean timeBackwardsCallback(long timestamp,
long lastTimestamp)
timestamp - 当前时间lastTimestamp - 上次生成Id的时间Copyright © 2019. All rights reserved.