From 2ffa124240df0f85e349a0f4885e01977d4915fa Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 20 Dec 2023 19:34:54 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20=E8=B0=83=E6=95=B4=E4=B8=8B?= =?UTF-8?q?=E5=9F=BA=E4=BA=8E=E6=97=B6=E9=97=B4=20ID=20=E7=9A=84=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axzo/workflow/core/engine/id/TimeBasedIdGenerator.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/id/TimeBasedIdGenerator.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/id/TimeBasedIdGenerator.java index 959f2866d..ec4aee6a0 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/id/TimeBasedIdGenerator.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/id/TimeBasedIdGenerator.java @@ -17,20 +17,19 @@ public class TimeBasedIdGenerator implements IdGenerator { private static final long SEQUENCE_BITS = 9L; private static final long MAX_SEQUENCE = ~(-1L << SEQUENCE_BITS); - - private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm"); private static final AtomicLong sequence = new AtomicLong(0); private static volatile String lastTimestamp = ""; @Override public synchronized String getNextId() { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm"); String timestamp = dateFormat.format(new Date()); if (timestamp.equals(lastTimestamp)) { long currentSequence = sequence.incrementAndGet() & MAX_SEQUENCE; if (currentSequence == 0) { // 如果递增数已达到最大值,则等待下一毫秒 - timestamp = tilNextTimestamp(timestamp); + timestamp = tilNextTimestamp(timestamp, dateFormat); } } else { sequence.set(0); @@ -41,7 +40,7 @@ public class TimeBasedIdGenerator implements IdGenerator { return timestamp + String.format("%09d", sequence.get()); } - private String tilNextTimestamp(String lastTimestamp) { + private String tilNextTimestamp(String lastTimestamp, SimpleDateFormat dateFormat) { String timestamp = dateFormat.format(new Date()); while (timestamp.equals(lastTimestamp)) { timestamp = dateFormat.format(new Date());