public String getMaxCode() {
        String date = PubFunction.getFormatDate("yyMMdd");
        int code = 0;
        synchronized(maxCode) {
            if (maxCode.length() == 10) {
                if (maxCode.indexOf(date) == 0) { // 存在本日数据
                    String serial = maxCode.substring(6);
                    code = PubFunction.getDefaultValue(serial);
                }
            }
            maxCode = date + Integer.toString(code + 10001).substring(1);
            return maxCode;
        }
    }在一个单例里面要产生不重复的序号,在用户要求新增记录的时候拿一个号,然后显示到页面(已设置为即时过期)上让用户输入其他信息,但发现不时出现重号,请指教

解决方案 »

  1.   

    直接在类中存放一个静态变量,利用这个静态变量来取得序号值
    取完加一
      

  2.   

    同步块里面应该包含同一个对象中可能多个线程都会去改变的资源.
      

  3.   

    楼主可以用 静态内部类解决只问题 
    我做网上书城生成订单号就是用的内部类
      

  4.   

    多谢各位,原来操作的妹妹经常按2次提交,晕倒