1.根据时间生成唯一订单号
public class PayUtils {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssS");
/**
* 获取时间随机数
*/
private static PayUtils instance;
static {
instance = new PayUtils();
}
public static PayUtils getInstance() {
return instance;
}
public static String generateID() {
synchronized (instance) {
try {
Thread.sleep(5);
} catch (InterruptedException e) {
}
return sdf.format(new Date()) ;
}
}
}
2.递增生成订单号
public class CreateUniNumber {
//订单号生成计数器
private static int orderNumCount = 0;
//每毫秒生成订单号数量最大值
private static int maxPerMSECSize=1000;
/**
* 根据时间 生成订单号
*/
public synchronized static String createTimeUniqueNumber() {
String finOrderNum = "";
try {
String nowTime = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
//如果计数器大于1000从0开始
if (orderNumCount >= maxPerMSECSize) {
orderNumCount = 0;
}
//组装订单号
String countStr=maxPerMSECSize +orderNumCount+"";
finOrderNum=nowTime+countStr.substring(1);
orderNumCount++;
} catch (Exception e) {
e.printStackTrace();
}
return finOrderNum;
}
}