聶永的博客

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

          Fork/Join模式(JSR166y)手記之ConcurrentLinkedDeque

          ConcurrentLinkedDeque是JSR166y中新增的一個無界并發(fā)Deque實現(xiàn),基于已鏈接節(jié)點的、任選范圍的雙端隊列。在迭代時,隊列保持弱一致性,但不會拋出ConcurrentModificationException異常。
          需要小心,與大多數(shù) collection 不同,size 方法不是一個固定時間操作。由于這些隊列的異步特性,確定當前元素的數(shù)量需要遍歷這些元素。
          另外,一些批量操作,諸如 addAll, removeAll, retainAll, containsAll, equals, toArray等,不能夠保證會立刻執(zhí)行。比如通過addAll方法批量提交若干元素,于此同時另一線程在迭代時,可能只能訪問到先前存在的元素。
          內(nèi)存一致性效果:當存在其他并發(fā) collection 時,將對象放入 ConcurrentLinkedDeque 之前的線程中的操作 happen-before 隨后通過另一線程從 ConcurrentLinkedDeque 訪問或移除該元素的操作。
          先前存在一個線程安全并阻塞的LinkedBlockingDeque實現(xiàn),現(xiàn)在好了,又多了個并發(fā)實現(xiàn),這樣和Queue保持一致,并發(fā)和阻塞版本都具有了。嗯,果然是好事要成雙。
          在使用上沒有什么可說的,隨時查看API DOC,即可。剛開始以為Fork/Join的工作竊取(work stealing)機制內(nèi)部使用ConcurrentLinkedDeque實現(xiàn),查看ForkJoinPool源代碼時,不曾發(fā)現(xiàn)其身影。




          參考資料:
          1. Class ConcurrentLinkedDeque

          posted on 2012-02-06 20:39 nieyong 閱讀(1245) 評論(0)  編輯  收藏 所屬分類: Java

          公告

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

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

          導航

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

          統(tǒng)計

          常用鏈接

          留言簿(58)

          隨筆分類(130)

          隨筆檔案(151)

          個人收藏

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 南康市| 龙里县| 舟曲县| 千阳县| 阳东县| 遂川县| 桦甸市| 夹江县| 山西省| 天柱县| 迁安市| 闵行区| 东源县| 澎湖县| 琼中| 开鲁县| 安化县| 靖远县| 禹城市| 乌审旗| 仙居县| 万荣县| 萝北县| 瑞金市| 齐齐哈尔市| 柳江县| 潜江市| 漳州市| 朝阳县| 延安市| 石林| 铜鼓县| 呼图壁县| 上林县| 安西县| 永修县| 益阳市| 哈尔滨市| 砚山县| 涞源县| 郑州市|