Doug Lea谈JDK7的Fork/Join框架

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修改过]

Fork/Join支持多核,还是需要JVM提供,就好比JDK1.5提供park/unpark意义一样。