聶永的博客

          記錄工作/學(xué)習(xí)的點(diǎn)點(diǎn)滴滴。

          Fork/Join模式(JSR166y)手記之JVAA6搭建環(huán)境,開始學(xué)習(xí)

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

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

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

          4. 擴(kuò)展框架以創(chuàng)建新類型的ForkJoinTasks等等。例如,那些需要事務(wù)的操作。只有很少量的人(例如,或許是Fortress運(yùn)行時(shí)類庫開發(fā)者)需要這么做,但是需要有足夠的基礎(chǔ)擴(kuò)展鉤子來才能做好。
          本文開始學(xué)習(xí),按照心得步驟一步一步進(jìn)行學(xué)習(xí)。即將開始。
          Doug Lea有關(guān)JUC的官網(wǎng)地址: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解壓到本地某個(gè)目錄,假設(shè)解壓地址是d:\workspace\jsr166
          3. 進(jìn)入CMD命令行,切換到d:\workspace\jsr166目錄下
          4. 運(yùn)行ANT命令:ant jsr166ydist (沒設(shè)置ANT環(huán)境,自行處理)
          5. 在dist目錄生成jsr166y.jar文件、docs目錄
          在相關(guān)項(xiàng)目中加入jsr166y.jar依賴即可。
          必備條件:JDK 1.6
          機(jī)器配置:
          操作系統(tǒng) Windows XP 專業(yè)版 32位 SP3
          處理器 英特爾 Pentium(奔騰) P6200 @ 2.13GHz
          內(nèi)存 4 GB ( 金士頓 DDR3 1333MHz / 三星 DDR3 1333MHz )
          參考資料:
          1. Java 7的并行支持:Fork/Join
          2. Java SE 7的新并發(fā)特性
          3. Adam Messinger談Java 7與8

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

          公告

          所有文章皆為原創(chuàng),若轉(zhuǎn)載請標(biāo)明出處,謝謝~

          新浪微博,歡迎關(guān)注:

          導(dǎo)航

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

          統(tǒng)計(jì)

          常用鏈接

          留言簿(58)

          隨筆分類(130)

          隨筆檔案(151)

          個(gè)人收藏

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 黑水县| 大荔县| 正阳县| 花莲市| 莱西市| 曲靖市| 弋阳县| 隆子县| 雷州市| 衡山县| 丹江口市| 陆丰市| 肥城市| 苍溪县| 和林格尔县| 莱阳市| 夏津县| 上蔡县| 罗山县| 芜湖市| 武乡县| 阿拉善左旗| 兴安县| 扎赉特旗| 铜梁县| 五台县| 宜君县| 新郑市| 阳高县| 海南省| 远安县| 山阳县| 乐陵市| 兴海县| 宁都县| 南澳县| 久治县| 黔东| 芜湖市| 龙游县| 新田县|