浏览代码

解决IdWorker生成UUID使用synchronized关键字串行效率低下问题

Caratacus 6 年之前
父节点
当前提交
515c56f889
共有 1 个文件被更改,包括 5 次插入3 次删除
  1. 5 3
      mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/IdWorker.java

+ 5 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/IdWorker.java

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.core.toolkit;
 
 import java.util.UUID;
+import java.util.concurrent.ThreadLocalRandom;
 
 /**
  * <p>
@@ -55,11 +56,12 @@ public class IdWorker {
 
     /**
      * <p>
-     * 获取去掉"-" UUID
+     * 使用ThreadLocalRandom获取UUID获取更优的效果 去掉"-"
      * </p>
      */
-    public static synchronized String get32UUID() {
-        return UUID.randomUUID().toString().replace(StringPool.DASH, StringPool.EMPTY);
+    public static String get32UUID() {
+        ThreadLocalRandom random = ThreadLocalRandom.current();
+        return new UUID(random.nextLong(), random.nextLong()).toString().replace(StringPool.DASH, StringPool.EMPTY);
     }
 
 }