From 702ba2c8e98d17646c7db3456946661ca73690cf Mon Sep 17 00:00:00 2001 From: "udf_admin@163.com" Date: Sun, 10 Dec 2017 16:39:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=88=86=E5=B8=83=E5=BC=8FID?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E7=9A=84=E6=97=B6=E9=97=B4=E6=88=B3=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/itkk/udf/id/IdWorkerFactory.java | 4 ++-- .../src/main/test/java/org/itkk/udf/id/IdWorkerTest.java | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerFactory.java b/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerFactory.java index d413de4..8ad18b3 100644 --- a/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerFactory.java +++ b/udf-starter-id/src/main/java/org/itkk/udf/id/IdWorkerFactory.java @@ -330,8 +330,8 @@ public class IdWorkerFactory { * * @return IdWorkerWrapper */ - private IdWorkerWrapper get() { - long dwId = new Date().getTime() & ~(-1L << (IdWorkerConstant.WORKER_ID_BITS + IdWorkerConstant.DATACENTER_ID_BITS)); + private synchronized IdWorkerWrapper get() { + long dwId = System.currentTimeMillis() & ~(-1L << (IdWorkerConstant.WORKER_ID_BITS + IdWorkerConstant.DATACENTER_ID_BITS)); return this.get(dwId); } diff --git a/udf-starter-id/src/main/test/java/org/itkk/udf/id/IdWorkerTest.java b/udf-starter-id/src/main/test/java/org/itkk/udf/id/IdWorkerTest.java index a0b5fe2..08ad482 100644 --- a/udf-starter-id/src/main/test/java/org/itkk/udf/id/IdWorkerTest.java +++ b/udf-starter-id/src/main/test/java/org/itkk/udf/id/IdWorkerTest.java @@ -1,6 +1,7 @@ package org.itkk.udf.id; import lombok.extern.slf4j.Slf4j; +import org.itkk.udf.core.constant.IdWorkerConstant; import org.junit.Test; import java.text.SimpleDateFormat; @@ -39,6 +40,10 @@ public class IdWorkerTest { } map.put(id, id); } + long time = System.currentTimeMillis(); + log.info(Long.toBinaryString(time)); + long dwId = time & ~(-1L << (IdWorkerConstant.WORKER_ID_BITS + IdWorkerConstant.DATACENTER_ID_BITS)); + log.info(Long.toBinaryString(dwId)); //0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 // 1100100 0101110001 1111010110 0111000000 1 - 00001 - 00001 - 000000000000 ---> 1 ,1 // 1100100 0101110010 0110110000 1110100110 1 - 00010 - 00010 - 000000000000 ---> 2 ,2