码迷,mamicode.com
首页 > 其他好文 > 详细

低并发环境下生成唯一Id

时间:2020-08-28 11:45:05      阅读:43      评论:0      收藏:0      [点我收藏+]

标签:valueof   eof   ret   解决   mem   system   解决方法   and   环境   

背景

项目中有一个订单模块,需要生成唯一的订单号,因为项目的并发要求不高,所以可以采用如下方法来生成唯一的id。

解决方法

使用时间戳加上一个随机数来生成唯一的Id。代码如下:

public class KeyUtil {
    //生成唯一的主键
    //格式为:时间+随机数
    public static synchronized String genUniqueKey(){ //不加synchronized关键字的话,在多线程并发时可能还是会重复
        Random random = new Random();
        Integer number = random.nextInt(900000) + 100000;  //生成6位随机数,random.nextInt(900000)生成0~900000之间的随机数
        return System.currentTimeMillis() + String.valueOf(number);    //System.currentTimeMillis()获取的是当前的系统时间
    } 
}

生成Id如下:
技术图片

可以看到生成的Id都是唯一的。

但是以上方法只能作为简单的应用,如果项目并发程度很高,则不能保证生成的Id是唯一的了。

低并发环境下生成唯一Id

标签:valueof   eof   ret   解决   mem   system   解决方法   and   环境   

原文地址:https://www.cnblogs.com/xiaozhengtongxue/p/13546815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!