每日一得

          不求多得,只求一得 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
          主站蜘蛛池模板: 无极县| 陵水| 常德市| 郸城县| 贵溪市| 福建省| 平潭县| 临泽县| 安庆市| 永仁县| 潜山县| 昌邑市| 电白县| 玉龙| 东台市| 竹溪县| 辽宁省| 莱州市| 韶关市| 个旧市| 同仁县| 赫章县| 凯里市| 平湖市| 巴南区| 雅江县| 常德市| 鹿泉市| 苗栗县| 铜川市| 株洲县| 亳州市| 板桥市| 安义县| 许昌市| 海原县| 潜江市| 子长县| 梅河口市| 开封县| 华池县|