JDK7的平行計算功能升級

banq發表於2009-11-16
Phasers
比CyclicBarrier更靈活,CyclicBarrier讓所有執行緒在某個同步點原地踏步繞圈等待,可以控制多執行緒同時暫停等待,Phaser增強了CyclicBarrier幾個特點:

允許計數超過時間變化
Phases能夠計數並且執行緒能夠知道這個計數值。
CyclicBarrier只允許一個同步action被註冊, 而Phaser允許更加靈活動態的多個Action
終止 – 顯式支援中斷終止phase
多層phaser樹
據說Phaser將是Java日常並行程式設計最重要的常用語法。

TransferQueue
比SynchronousQueue 效能在不公平模式unfair提高3倍,是公平faire模式14倍。因為SynchronousQueue用在很多核心普用庫ThreadPoolExecutor中,所以Java 7提供的TransferQueue將大大提高所有使用ThreadPoolExecutor的程式效能。特別的是:當有新條目要被加入到佇列中時,呼叫transfer將確保佇列中所有條目被處理。Doug Lea成為capability-wise 容量智慧化。
SynchronousQueue是使用兩個佇列來實現Producer和Consumer, 用一個鎖保護這兩個佇列而LinkedTransferQueue使用非堵塞操作,避免序列化瓶頸。

Fork-join
提供了分而治之的平行計算模型,提供了大型資料集並行處理的方式。許多排序 過濾 搜尋演算法都能使用這個模型實現,有點類似小小Hadoop意思。

Fork-join已經成為其他並行語言 Scala, Clojure, Fortress, and Groovy (GPars) 重要語法。並且充分吸收了他們的優勢。

其他Java 7平行計算有特點功能API: Fences ConcurrentReferenceHashMap Concurrent LRU –ParallelArray

原文:JSR 166 Concurrency Updates Hit JDK 7

Java 7 TransferQueue

相關文章