生成毫秒数+3位自增:
1 2 3 4 5 6 7 8 9 10 11 12 13
| private static AtomicLong sequence = new AtomicLong();
public static String generSeq() { for (; ; ) { long oldSeq = sequence.get(); long curMS = System.currentTimeMillis() * 1000;
long newSeq = curMS > oldSeq ? curMS : oldSeq + 1; if (sequence.compareAndSet(oldSeq, newSeq)) { return String.valueOf(newSeq); } } }
|
生成yyyyMMddHHmmssSSS+2位自增:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"); private static AtomicLong lastSeq = new AtomicLong(); public static String generSeqStr() { for (; ; ) { long oldSeq = lastSeq.get(); String curDate = LocalDateTime.now().format(DATE_TIME_FORMATTER); long seq = Long.valueOf(curDate) * 100;
long newSeq = seq > oldSeq ? seq : oldSeq + 1; if (lastSeq.compareAndSet(oldSeq, newSeq)) { return String.valueOf(newSeq); } } }
|