1、一个简单的订单号生成器:
从代码可以看出:
long orderNo = (Long.parseLong((date))) * 10000;
orderNo += orderNum + Long.parseLong(RandomStringUtils.randomNumeric(3));
每毫秒可以保证,10000-999个订单号不重复。
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.lang.RandomStringUtils;
public class GenerateOrderNoUtil {
private static long orderNum = 0l;
private static String date ;
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 10000; i++) {
System.out.println(getOrderNo());
}
}
public static synchronized String getOrderNo() {
String str = new SimpleDateFormat("yyMMddHHmmssS").format(new Date());
if(date==null||!date.equals(str)){
date = str;
orderNum = 0l;
}
orderNum ++;
long orderNo = (Long.parseLong((date))) * 10000;
//为了避免订单号始终以0001,0002。。。结尾加上一个三位的随机数
orderNo += orderNum + Long.parseLong(RandomStringUtils.randomNumeric(3));
return orderNo+"";
}
}