问题描述
我用下方法产生一个订单号,在xp上不会出现重复,在win2003上,连续执行20次,都是重复的,不解publicstaticStringgetOrderNo(StringmerAreaCode,StringmerSN){StringorderNo="";Datedate=newDate();SimpleDateFormatfrom=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss:SS");Stringtimes=from.format(date);//格式化时间Stringyear=times.substring(0,4);//获取年Stringmonth=times.substring(5,7);//获取月Stringsecond=times.substring(18,19);//获取秒第一位数StringMillisecond=times.substring(20,21);//获取毫秒第一位数orderNo=merAreaCode+merSN+year+month+second+Millisecond;System.out.println("orderNo:"+orderNo);returnorderNo;}
解决方案
解决方案二:
和2003应该没太大关系吧是不是执行时间间隔太短,你取的又是毫秒的首位cpu速度太快,时间还没更新取最后一位看看。另:这种生成订单号的方法不安全,并行执行或者高负载下都有可能有问题后面最好附加流水号,或者Guid之类的
解决方案三:
运气问题
解决方案四:
2003一般都装在服务器上,而服务器有的是很快的……
解决方案五:
该回复于2011-03-17 10:19:23被版主删除
时间: 2024-12-25 23:01:29