• java不重复订单号生成规则


     1 import java.text.DateFormat;
     2 import java.text.SimpleDateFormat;
     3 import java.util.Date;
     4 
     5 public class OrderNo{
     6     private static int sn = 0;
     7       
     8     public static String NextOrderNo(){
     9         if(sn == 999999999)
    10             sn = 0;
    11         else
    12             sn++;
    13         DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
    14         return df.format(new Date()) + padRight(String.valueOf(sn),9, '0');
    15     }
    16     public static String padLeft(String src, int len, char ch) {
    17         int diff = len - src.length();
    18         if (diff <= 0) {
    19             return src;
    20         }
    21 
    22         char[] charr = new char[len];
    23         System.arraycopy(src.toCharArray(), 0, charr, 0, src.length());
    24         for (int i = src.length(); i < len; i++) {
    25             charr[i] = ch;
    26         }
    27         return new String(charr);
    28     }
    29     public static String padRight(String src, int len, char ch) {
    30         int diff = len - src.length();
    31         if (diff <= 0) {
    32             return src;
    33         }
    34 
    35         char[] charr = new char[len];
    36         System.arraycopy(src.toCharArray(), 0, charr, diff, src.length());
    37         for (int i = 0; i < diff; i++) {
    38             charr[i] = ch;
    39         }
    40         return new String(charr);
    41     }
    42     // 防止创建类的实例
    43     private OrderNo(){}
    44     
    45     public static void main(String[] args) {
    46         Thread t1 = new Thread(){
    47             @Override
    48             public void run() {
    49                 for (int i = 0; i < 5000; i++) {
    50                     try {
    51                         sleep(300);
    52                         System.out.println(OrderNo.NextOrderNo());
    53                     } catch (InterruptedException e) {
    54                         e.printStackTrace();
    55                     }
    56                 }
    57             }
    58         };
    59         Thread t2 = new Thread(){
    60             @Override
    61             public void run() {
    62                 for (int i = 0; i < 5000; i++) {
    63                     try {
    64                         sleep(200);
    65                         System.out.println(OrderNo.NextOrderNo());
    66                     } catch (InterruptedException e) {
    67                         e.printStackTrace();
    68                     }
    69                 }
    70             }
    71         };
    72         Thread t3 = new Thread(){
    73             @Override
    74             public void run() {
    75                 for (int i = 0; i < 5000; i++) {
    76                     try {
    77                         sleep(50);
    78                         System.out.println(OrderNo.NextOrderNo());
    79                     } catch (InterruptedException e) {
    80                         e.printStackTrace();
    81                     }
    82                 }
    83             }
    84         };
    85         t1.run();
    86         t2.run();
    87         t3.run();
    88     }
    89 }
    90     
  • 相关阅读:
    Django~学习计划
    在路上---学习篇(一)Python 数据结构和算法 (1)
    面向对象设计原则—单一、开闭、里氏替换原则
    flex布局实现elment容器布局
    js 面向对象的三大特性
    Http状态码大全(200、404、500等)
    HTTP常见状态码 200 301 302 404 500
    Android编程中,sp和px和dp有什么区别
    Android xml资源文件中@、@android:type、@*、?、@+含义和区别
    Android虚拟键盘上下左右键按下和弹起的响应事件
  • 原文地址:https://www.cnblogs.com/1012hq/p/11207760.html
Copyright © 2020-2023  润新知