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+""; } }