每日一得

          不求多得,只求一得 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 閱讀(164) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 谷城县| 乌苏市| 崇阳县| 治县。| 阳山县| 昆山市| 合作市| 北海市| 庆安县| 龙陵县| 原平市| 巧家县| 屏东市| 垣曲县| 安图县| 淮滨县| 清镇市| 南川市| 平利县| 盐山县| 庄浪县| 平定县| 云林县| 蓝田县| 通渭县| 防城港市| 古浪县| 彭水| 囊谦县| 忻城县| 锡林郭勒盟| 饶平县| 蛟河市| 丁青县| 夹江县| 积石山| 资中县| 麟游县| 微博| 横峰县| 万宁市|