聶永的博客

          記錄工作/學習的點點滴滴。

          Fork/Join模式(JSR166y)手記之JVAA6搭建環境,開始學習

          Doug Lea的jsr166y,主要體現在Fork/Join模式,分而治之,然后合并結果,這么一種編程模式。相比JDK 1.6內置的JUC并發框架,更加細粒度。雖然已經內置JDK 1.7中,但本文環境基于JDK 1.6,因此在相關包的引用方面,差異在于包的路徑。
          有關Fork/Join的一些摘抄:
          fork/join框架是一個“多核友好的、輕量級并行框架 ”,它支持并行編程風格,將問題遞歸拆分成多個更小片斷,以并行和調配的方式解決。Fork-join融合了分而治之技術;獲取問題后,遞歸地將它分成多個子問題,直到每個子問題都足夠小,以至于可以高效地串行地解決它們。遞歸的過程將會把問題分成兩個或者多個子問題,然后把這些問題放入隊列中等待處理(fork步驟),接下來等待所有子問題的結果(join步驟),把多個結果合并到一起。
          Doug Lea描述了fork/join框架最可能的使用場景和采用過程:
          總之,我期望其使用曲線與其他并發工具雷同。最初,只有較少真正需要的人使用它們,但最終很難找到不依賴于它們的程序,它們常常深埋在底層基礎架構組件中。因此,表面語法支持可能并不是那么重要——類庫/組件開發者越是想合并它們,其用法越是表現的笨拙。
          理想的情況下,有幾個使用層次:
          1. “并行做事”層次,語言或工具翻譯成并行代碼,同時檢查安全性/活躍性。這仍部分處于研究領域。

          2. 安排集合的并行操作。——map、reduce、apply等等。那些想使用一次性操作特性操縱集合的程序員們,可以使用這些特性來提高常用處理類型的速度。(這是ListTasks、ArrayTasks等等層次)

          3. 手工生效forkjoin以解決特定問題。這是我正在全力投入的層次,以確保我們可能使用工作竊取框架來支持范圍廣泛的并行算法。(當前一些怪模怪樣的和缺乏解釋的方法,如isQuiescent是為這種高級用法設計的。多數程序只使用“fork”和“join”,但當你需要其他這些方法時,它們也被提供了。)

          4. 擴展框架以創建新類型的ForkJoinTasks等等。例如,那些需要事務的操作。只有很少量的人(例如,或許是Fortress運行時類庫開發者)需要這么做,但是需要有足夠的基礎擴展鉤子來才能做好。
          本文開始學習,按照心得步驟一步一步進行學習。即將開始。
          Doug Lea有關JUC的官網地址:http://gee.cs.oswego.edu/dl/concurrency-interest/
          1. 下載原始代碼(http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/cvs-root.tar.gz?parent=1&view=tar)到本地
          2. 把cvs-root.tar.gz解壓到本地某個目錄,假設解壓地址是d:\workspace\jsr166
          3. 進入CMD命令行,切換到d:\workspace\jsr166目錄下
          4. 運行ANT命令:ant jsr166ydist (沒設置ANT環境,自行處理)
          5. 在dist目錄生成jsr166y.jar文件、docs目錄
          在相關項目中加入jsr166y.jar依賴即可。
          必備條件:JDK 1.6
          機器配置:
          操作系統 Windows XP 專業版 32位 SP3
          處理器 英特爾 Pentium(奔騰) P6200 @ 2.13GHz
          內存 4 GB ( 金士頓 DDR3 1333MHz / 三星 DDR3 1333MHz )
          參考資料:
          1. Java 7的并行支持:Fork/Join
          2. Java SE 7的新并發特性
          3. Adam Messinger談Java 7與8

          posted on 2012-02-03 23:01 nieyong 閱讀(2790) 評論(0)  編輯  收藏 所屬分類: Java

          公告

          所有文章皆為原創,若轉載請標明出處,謝謝~

          新浪微博,歡迎關注:

          導航

          <2012年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          26272829123
          45678910

          統計

          常用鏈接

          留言簿(58)

          隨筆分類(130)

          隨筆檔案(151)

          個人收藏

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乌拉特后旗| 城口县| 呈贡县| 任丘市| 周至县| 深州市| 内江市| 油尖旺区| 安康市| 江华| 鄂托克前旗| 朔州市| 石城县| 京山县| 从化市| 乐陵市| 昭平县| 黄梅县| 博爱县| 深圳市| 虎林市| 满城县| 罗平县| 清流县| 香港 | 财经| 夏邑县| 延寿县| 长治县| 阳江市| 卢龙县| 安仁县| 邳州市| 台江县| 柳河县| 弋阳县| 隆子县| 辛集市| 广灵县| 容城县| 吉林省|