package com.aps.common.core.utils.uuid; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.atomic.AtomicLong; /** * ID生成器工具类 * * @author ruoyi */ public class IdUtils { /** * 获取随机UUID * * @return 随机UUID */ public static String randomUUID() { return UUID.randomUUID().toString(); } /** * 简化的UUID,去掉了横线 * * @return 简化的UUID,去掉了横线 */ public static String simpleUUID() { return UUID.randomUUID().toString(true); } /** * 获取随机UUID,使用性能更好的ThreadLocalRandom生成UUID * * @return 随机UUID */ public static String fastUUID() { return UUID.fastUUID().toString(); } /** * 简化的UUID,去掉了横线,使用性能更好的ThreadLocalRandom生成UUID * * @return 简化的UUID,去掉了横线 */ public static String fastSimpleUUID() { return UUID.fastUUID().toString(true); } private static AtomicLong id; /** * 生成Long 类型唯一ID */ public synchronized static Long getId() { //如果需要更长 或者更大冗余空间, 只需要 time * 10^n 即可 //当前可保证1毫秒 生成 10000条不重复 Long time = Long.valueOf(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()))*10000; if (id == null) { id = new AtomicLong(time); return id.get(); } if (time <= id.get()) { id.addAndGet(1); } else { id = new AtomicLong(time); } return id.get(); } }