posts - 10,comments - 2,trackbacks - 0
          <2007年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          下面的類計算并緩存了一個總和,并且在另一個類中打印這個總和       

          class Cache{

                       static {

                             initializeIfNecessary();

                        }

                    private static int sum;

                    public static int getSum(){

                          initializeIfNecessary();

                          return sum;

                     }

                   private static boolean initialized = false;

                  private static synchronized void initializeIfNecessary(){

                        if(!initialized){

                               for(int i=0;  i <  100;  i++  )

                                   sum+=i;

                              initialized = true;

                            }

                    }

                  }

           

          pubic class Client  {

              pubilc static void main(String[] args){

                      System.out.println(Cache.getSum());

             }

           }

          程序是一個典型的半開循環,應該打印出1到99的整數總和,即4950,但程序運行打印的為9900,是預期值的兩倍。

          程序在確保sum在使用之前就已經初始化這個問題上,遇到了麻煩。程序結合了惰性初始化和積極初始化,還使用上了同步,以確保緩存在多線程環境下也能工作,但程序無法完成預期的工作。

          程序輸出打印是控制標志initialized 的問題。qq上一個朋友問的一本書里的問題,我也找到那本書了,是惰性初始化(static初始化)的問題,控制標志在static完成初始化后又重新被構造器賦值為false,初始化總和值的方法被執行了兩次。

          posted on 2007-09-06 09:58 皇馬嘯西風 閱讀(219) 評論(1)  編輯  收藏

          FeedBack:
          # re: 總和的玩笑
          2007-09-06 12:25 | 孫健
          長見識了!嘿
            回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 洞口县| 石柱| 兴安县| 田东县| 平顶山市| 涿鹿县| 剑河县| 来安县| 武隆县| 定兴县| 林口县| 新干县| 延长县| 山西省| 南皮县| 西乌| 盐池县| 手机| 崇信县| 汝城县| 建瓯市| 大丰市| 维西| 抚宁县| 广宁县| 桦南县| 杂多县| 应城市| 东宁县| 米林县| 上犹县| 延长县| 绥中县| 叙永县| 邯郸县| 大同市| 哈尔滨市| 筠连县| 右玉县| 浦江县| 朝阳县|