import java.util.concurrent.atomic.AtomicLong;
public class SeqUtil {
private Long lastTime = -1L;
private AtomicLong addNubmer = new AtomicLong(0);
private volatile static SeqUtil uniqueInstance = null;
public static SeqUtil getUniqueInstance() {
if (null == uniqueInstance) {
synchronized (SeqUtil.class) {
if (null == uniqueInstance) {
uniqueInstance = new SeqUtil();
}
}
}
return uniqueInstance;
}
public String getSeq() {
// 获取时间戳 取后4位
Long currentTime = System.currentTimeMillis();
String str;
if ((currentTime / 1000) == (lastTime / 1000)) {
str = addNubmer.toString();
addNubmer.addAndGet(1);
String seq = str.substring(str.length() - 4);
return seq;
} else {
lastTime = currentTime;
synchronized (SeqUtil.class) {
并发情况下的自增序列
Java并发编程:自增序列的实现
最新推荐文章于 2023-10-07 01:47:53 发布
本文探讨了在并发环境下如何实现自增序列,主要聚焦于Java编程语言。内容涉及原子操作、 volatile 关键字以及使用锁(synchronized)进行同步控制的方法,旨在保证在多线程情况下自增序列的正确性和一致性。

最低0.47元/天 解锁文章
778

被折叠的 条评论
为什么被折叠?



