mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
support back
This commit is contained in:
@@ -141,10 +141,16 @@ public class Snowflake implements Serializable {
|
||||
public synchronized long nextId() {
|
||||
long timestamp = genTime();
|
||||
if (timestamp < lastTimestamp) {
|
||||
// 如果服务器时间有问题(时钟后退) 报错。
|
||||
throw new IllegalStateException(StrUtil.format("Clock moved backwards. Refusing to generate id for {}ms", lastTimestamp - timestamp));
|
||||
if(lastTimestamp - timestamp < 2000){
|
||||
// 容忍2秒内的回拨,避免NTP校时造成的异常
|
||||
timestamp = lastTimestamp;
|
||||
} else{
|
||||
// 如果服务器时间有问题(时钟后退) 报错。
|
||||
throw new IllegalStateException(StrUtil.format("Clock moved backwards. Refusing to generate id for {}ms", lastTimestamp - timestamp));
|
||||
}
|
||||
}
|
||||
if (lastTimestamp == timestamp) {
|
||||
|
||||
if (timestamp == lastTimestamp) {
|
||||
sequence = (sequence + 1) & sequenceMask;
|
||||
if (sequence == 0) {
|
||||
timestamp = tilNextMillis(lastTimestamp);
|
||||
|
Reference in New Issue
Block a user