細心!用心!耐心!

          吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學(xué)業(yè),五六點粗墨,七八筆買賣,九十道人情。

          BlogJava 聯(lián)系 聚合 管理
            1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks
          Future模式可以簡單的看成是 Proxy 模式Thread-Per-Message 模式 的結(jié)合,在Proxy模式中,用一個Proxy來代替真正的目標(biāo)(Subject)生成,目標(biāo)的生成可能是費時的,例如在開啟一個內(nèi)嵌圖片的文件中,希望程式能儘快完成開啟文件的動作,並顯示一個可接受的畫面給使用者看,在還不需要看到圖片的頁面中先使用Proxy代替真正的圖片載入,只有在真正需要看到圖片時,才由Proxy物件載入真正的圖片。

          考慮這樣一個情況,使用者可能快速翻頁瀏覽文件中,而圖片檔案很大,如此在瀏覽到有圖片的頁數(shù)時,就會導(dǎo)致圖片的載入,因而造成使用者瀏覽文件時會有停頓的現(xiàn)象,所以我們希望在文件開啟之後,仍有一個背景作業(yè)持續(xù)載入圖片,如此使用者在快速瀏覽頁面時,所造成的停頓可以獲得改善。

          Future模式在請求發(fā)生時,會先產(chǎn)生一個Future物件給發(fā)出請求的客戶,它的作用就像是Proxy物件,而同時間,真正的目標(biāo)物件之生成,由一個新的執(zhí)行緒持續(xù)進行(即Thread-Per-Message),真正的目標(biāo)物件生成之後,將之設(shè)定至Future之中,而當(dāng)客戶端真正需要目標(biāo)物件時,目標(biāo)物件也已經(jīng)準(zhǔn)備好,可以讓客戶提取使用。

          Future

          一個簡單的Java程式片段示範(fàn)可能像是這樣:
          ....
           public Future request() {
              final Future future = new Future();

              new Thread() {
                  public void run() {
                      // 下面這個動作可能是耗時的
                      RealSubject subject = new RealSubject();
                      future.setRealSubject(subject);
                  }
              }.start();

              return future;
           }
          posted on 2007-04-17 10:57 張金鵬 閱讀(412) 評論(0)  編輯  收藏 所屬分類: 多執(zhí)行緒模式
          主站蜘蛛池模板: 海林市| 普宁市| 永春县| 略阳县| 江永县| 新平| 安达市| 蒙自县| 紫阳县| 海盐县| 松潘县| 西城区| 阿坝县| 林甸县| 龙山县| 尼勒克县| 故城县| 莒南县| 应城市| 安福县| 常州市| 正蓝旗| 平安县| 芦溪县| 井冈山市| 旬阳县| 宿迁市| 连平县| 阿拉善右旗| 宜城市| 兴安县| 绥江县| 洞头县| 海晏县| 凤台县| 册亨县| 安达市| 勐海县| 丰原市| 关岭| 安国市|