每日一得

          不求多得,只求一得 about java,hibernate,spring,design,database,Ror,ruby,快速開發
          最近關心的內容:SSH,seam,flex,敏捷,TDD
          本站的官方站點是:顛覆軟件

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            220 隨筆 :: 9 文章 :: 421 評論 :: 0 Trackbacks
          想用緩存又不想用oscache覺得
          麻煩,自己寫了個簡單的緩存,不小心發現getAllCity結果總是在第一次進去的時候數量加倍,第二次就好了,真實怪事.

          代碼如下:
          public?static?List?getAllCity(boolean?bInit)?throws XXException?{
          ????????List?cityList?
          =?new?ArrayList();
          ????????
          if?(null?==?CityInfos?||?CityInfos.size()?==?0)?bInit?=?true;
          ????????
          synchronized?(CityInfos)?{
          ????????????
          if?(bInit)?{?//retrieve?city?info?from?database
          ????????????????CityService?service?=?new?CityService();
          ????????????????cityList?
          =?service.getAllCitys();
          ????????????????CityInfos.clear();
          ????????????????
          if?(null?!=?cityList?&&?cityList.size()?>?0)?{
          ????????????????????log.info(
          "========"?+?"cityList?size?:?"?+?cityList.size()?+?"========");
          ????????????????????
          for?(Iterator?it?=?cityList.iterator();?it.hasNext();)?{
          ????????????????????????CityVo?cityVo?
          =?(CityVo)?it.next();
          ????????????????????????CityInfos.put(cityVo.getId(),?cityVo);
          ????????????????????}
          ????????????????}
          ????????????}

          ????????????cityList.addAll(CityInfos.values());
          ????????}
          ????????
          return?cityList;
          ????}

          CityInfos是一個static Hashtable,查了下原來是共用了cityList,將synchronized 里面的cityList 改成
          List tmpCityList 就可以了? :)? 為什么會犯低級錯誤呢?? :(
          posted on 2006-03-30 14:18 Alex 閱讀(167) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 自贡市| 饶平县| 舒兰市| 故城县| 巩义市| 遵义县| 东台市| 元氏县| 始兴县| 泉州市| 宝清县| 清远市| 大庆市| 临西县| 伊川县| 无棣县| 玉屏| 舞钢市| 东乡族自治县| 志丹县| 清新县| 定远县| 玛纳斯县| 上高县| 远安县| 凤山县| 晋中市| 湟中县| 资兴市| 屏南县| 奉新县| 额尔古纳市| 南木林县| 彝良县| 唐河县| 青海省| 葫芦岛市| 都安| 昭苏县| 连城县| 乌鲁木齐县|