keep moving!

We must not cease from exploration. And the end of all our exploring will be to arrive where we began and to know the place for the first time.
随笔 - 37, 文章 - 2, 评论 - 3, 引用 - 0
数据加载中……

Design Pattern: Future 模式

Future模式可以簡單的看成是 Proxy 模式Thread-Per-Message 模式 的結合,在Proxy模式中,用一個Proxy來代替真正的目標(Subject)生成,目標的生成可能是費時的,例如在開啟一個內嵌圖片的文件中,希望程式能儘快完成開啟文件的動作,並顯示一個可接受的畫面給使用者看,在還不需要看到圖片的頁面中先使用Proxy代替真正的圖片載入,只有在真正需要看到圖片時,才由Proxy物件載入真正的圖片。

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

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

Future

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

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

    return future;
 }


张金鹏 2007-04-17 10:57 发表评论

文章来源:http://www.blogjava.net/jesson2005/articles/111199.html

posted on 2008-09-07 11:06 大石头 阅读(150) 评论(0)  编辑  收藏 所属分类: 多线程


只有注册用户登录后才能发表评论。


网站导航: