Doug Lea談JDK7的Fork/Join框架

banq發表於2010-01-26
Doug Lea是著名的平行計算專家,NIO socket最初來源其設計框架,最近接受InfoQ影片訪問,談論具有革命性意義的Fork/Join框架, 這個新特性將計劃在Java 7的java.util.concurrent中提供。

Fork/Join是一個更容易執行高效能 平行計算以及細粒度的任務的引擎,因為目前主流是關注伺服器端非同步通訊,它工作於多核晶片系統。類似將任務分兩部分同時執行,然後將結果融合。

就像同時在做某件事,你會隔段時間將一些任務放到一個佇列中,看看有沒有別人會偷些任務去做,如果有,說明他們的任務不飽和,能夠幫助你做些事情,如果你掛Hang在那裡,表明你有很多事情要做。

Scala 和Clojure 都已經能很好實現Fork/Join這些平行計算模型。Clojure 和Scala actor模型使用類似引擎實現並行拆封。 這個基本的work-stealing框架適合很多很多應用場景。

Fork/Join框架希望將來能夠支撐數百個CPU,並試圖挑戰1000核。

該訪談也談到了程式設計模式的挑戰,過去大家學習的都是先後順序程式設計正規化,而平行計算帶來了併發平行計算正規化,程式碼執行可能是隨意無先後的執行,如何適應這種新變化?Doug Lea認為這已經不只是技術問題,而是藝術問題了,建議看看"The art of multiprocessor programming"多核程式設計藝術這本書。

更多可參考訪談原文

[該貼被banq於2010-01-26 14:13修改過]

相關文章