java 实现 4位自增序列取自时间戳,同一秒内按序列自增长,新秒重计
时间: 2024-03-02 11:54:24 浏览: 332
您好!Java可以通过使用`AtomicInteger`类和时间戳来实现4位自增序列,同一秒内按序列自增长,新秒重计的功能。以下是一个示例代码:
```java
import java.util.concurrent.atomic.AtomicInteger;
public class TimestampSequenceGenerator {
private AtomicInteger counter = new AtomicInteger(0);
private long lastTimestamp = 0;
public synchronized int getNext() {
long timestamp = System.currentTimeMillis();
if (timestamp == lastTimestamp) {
return (counter.incrementAndGet() % 10000);
} else {
counter.set(0);
lastTimestamp = timestamp;
return (counter.incrementAndGet() % 10000);
}
}
}
```
在上面的代码中,`AtomicInteger`类的实例`counter`被初始化为0,`lastTimestamp`记录上一次的时间戳。`getNext()`方法通过`synchronized`关键字来保证线程安全。如果当前时间戳与上一次时间戳相同,则计数器的值自增1,并对10000取模以保证序列值为4位数。如果当前时间戳大于上一次时间戳,则将计数器的值重置为0,并更新`lastTimestamp`为当前时间戳,返回序列值。这样就可以实现4位自增序列取自时间戳,同一秒内按序列自增长,新秒重计的功能。
阅读全文