java如何生成12位永远不重复的数字

需要是12位数字的订单号,我考虑到时间戳,时间戳是13位,我要的12,位如果截取前12位会不会有重复... 需要是12位数字的订单号,我考虑到时间戳,时间戳是13位,我要的12,位 如果截取前12位会不会有重复 展开
 我来答
帐号已注销
2020-12-24 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:167万
展开全部

Calendar calendar = Calendar.getInstance();

System.out.println("现在:"+calendar.getTime().getTime());

calendar.add(Calendar.YEAR, 10);

System.out.println("10年后:"+calendar.getTime().getTime());

时间戳高并发还是会有重复的,你应该每获取一次加1的方法生成。用锁对象或者把方法声明为synchronized保证并发也不会重复。如果有用数据库,也可以用数据库提供的sequence来帮你生成。

扩展资料:

当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类;

通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用。

参考资料来源;百度百科-Java

hhxlyl
推荐于2017-10-13 · TA获得超过392个赞
知道小有建树答主
回答量:380
采纳率:100%
帮助的人:435万
展开全部
Calendar calendar = Calendar.getInstance();
System.out.println("现在:"+calendar.getTime().getTime());
calendar.add(Calendar.YEAR, 10);
System.out.println("10年后:"+calendar.getTime().getTime());

输出:

现在:1404208483914

10年后:1719827683914

如果用时间戳,截取后面12位,不要第一位,18年内都不会有大问题,不过这样的话,你的生成ID的方法就得同步,避免高并发的时候可能出现的相同ID(理论上很有可能的,虽然1毫秒内出现生成多个订单的几率很小)


建议使用yyMMdd 6位日期,加上6位增长的数字,

比如140701000001,140701000002,...

或者直接12位增长的数字,在数据库建个序列去处理就好。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LMLU23
2014-07-01 · TA获得超过901个赞
知道小有建树答主
回答量:373
采纳率:0%
帮助的人:365万
展开全部
时间戳高并发还是会有重复的,你应该每获取一次加1的方法生成。用锁对象或者把方法声明为synchronized保证并发也不会重复。如果有用数据库,也可以用数据库提供的sequence来帮你生成
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
alexmao4
2014-07-01 · TA获得超过1741个赞
知道大有可为答主
回答量:2350
采纳率:50%
帮助的人:453万
展开全部
java一级其他很多软件语言,其实是没有办法实现真正的随机问题.
截取当然会,少取以为就相当于是10毫秒级别,重复概念很大。
java应该用UUID.
或者数据库上SEQ实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杏花飞离人泪
2014-07-01 · TA获得超过413个赞
知道小有建树答主
回答量:266
采纳率:100%
帮助的人:57.5万
展开全部
时间戳是当前时间到1970年的毫秒数。
你非要12位可以 :
new Date().getTime()-1300000000000L
这个数至少100年还是12位。而且不会重复
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式