SnowflakeIdWorker { public synchronized long nextId() { long timestamp = timeGen(); if (timestamp < lastTimestamp) { throw new RuntimeException( String.format("Clock moved backwards. Refusing to generate id for %d milliseconds", lastTimestamp - timestamp)); } if (lastTimestamp == timestamp) { sequence = (sequence + 1) & sequenceMask; if (sequence == 0) { timestamp = tilNextMillis(lastTimestamp); } } else { sequence = 0L; } lastTimestamp = timestamp; return ((timestamp - twepoch) << timestampLeftShift) | (datacenterId << datacenterIdShift) | (workerId << workerIdShift) | sequence; } SnowflakeIdWorker(long workerId, long datacenterId); synchronized long nextId();  }
@Test public void contextLoads() { SnowflakeIdWorker snowflakeIdWorker =new SnowflakeIdWorker(0,0); for (int i=0;i<100;i++){ System.out.println(snowflakeIdWorker.nextId()); } }