日期:2014-05-20  浏览次数:20633 次

请教:为什么不能实现同步
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;
                }
        }

在一个单例里面要产生不重复的序号,在用户要求新增记录的时候拿一个号,然后显示到页面(已设置为即时过期)上让用户输入其他信息,但发现不时出现重号,请指教


------解决方案--------------------
直接在类中存放一个静态变量,利用这个静态变量来取得序号值
取完加一
------解决方案--------------------
把方法也弄成synchronized的...
------解决方案--------------------
同步块里面应该包含同一个对象中可能多个线程都会去改变的资源.
------解决方案--------------------
楼主可以用 静态内部类解决只问题
我做网上书城生成订单号就是用的内部类