|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
其实产生见解的过程就是训练自己发现问题,分析问题的能力。根据以上的认识我想谈下传统的学习与通过视频独立学习的优缺点:明天,处置器的内核数目在不休增添,以甚么样的办法开辟程序才干发扬出新硬件的效能呢?这正酿成一个愈发主要的成绩摆在了开辟者眼前。IBMDeveloperworks已公布了一篇先容Fork-Join并发类库的连载文章,Fork-Join类库会作为行将离开的Java7的一部分举行公布。InfoQ之前也报导过Java7中最后的fork/join提案,个中还包括来自最后创立者DougLea的反应。DougLea在他的论文“Fork/JoinParallelisminJava”中,初次把fork/join的观点引进到Java中。DougLea的util.concurrent包是JSR-166的基本,后者是公布在Java5中的java.util.concurrentl类库。Fork/Join是对JSR-166的复杂订正。
连载文章的第一部分具体先容了fork-join类库的中心观点,和它要办理的成绩:硬件的开展趋向十分明晰;Moore定律标明不会呈现更高的时钟频次,可是每一个芯片上会合成更多的内核。很简单设想让十几个处置器忙碌地处置一个粗粒度的义务界限(好比一个用户哀求),可是这项手艺不会扩展到数千个处置器——在这类情况下短工夫内流量大概会呈指数级增加,但终极硬件趋向将会占下风。当跨进多内核时期时,我们必要找到更细粒度的并行性,不然将面对即使有很多事情必要往做而处置器却仍处于余暇的风险。假如但愿跟上手艺开展的脚步,软件平台也必需共同支流硬件平台的变化。终极,Java7将会包括一种框架,用于暗示某种更细粒度级其余并行算法:fork-join框架。 第二部分深切切磋了在第一部分里界说的观点,触及到分而治之(divide-and-conquer)的编程手艺:Fork-join交融了分而治之手艺;猎取成绩后,递回地将它分红多个子成绩,直到每一个子成绩都充足小,以致于能够高效地串行地办理它们。递回的历程将会把成绩分红两个大概多个子成绩,然后把这些成绩放进行列中守候处置(fork步骤),接上去守候一切子成绩的了局(join步骤),把多个了局兼并到一同。 文章接上去展现了一个利用fork/join完成兼并排序(merge-sort)算法的示例。
这个连载系列的最初一部分先容了ParallelArray类。ParallelArray是一个可用于fork/join算法的数据布局,它供应了一个通用目标API,以高度并发的体例实行数据集的搜刮、过滤和转换。
处置Java的BGGA闭包提案的团队已采取了fork-join框架与闭包协同事情。他们还在站点上供应了一个能够事情的完成。Developerworks上的那篇连载文章枚举了两个利用ParallelArray类的例子,它们之间的区分在因而否利用了闭包:
上面的例子是查找一组先生中最好的GPA,它用到了以后Java7的fork/join提案:- ParallelArraystudents=newParallelArray(fjPool,data);doublebestGpa=students.withFilter(isSenior).withMapping(selectGpa).max();publicclassStudent{Stringname;intgraduationYear;doublegpa;}staticfinalOps.PredicateisSenior=newOps.Predicate(){publicbooleanop(Students){returns.graduationYear==Student.THIS_YEAR;}};staticfinalOps.ObjectToDoubleselectGpa=newOps.ObjectToDouble(){publicdoubleop(Studentstudent){returnstudent.gpa;}};
复制代码 上面的例子与下面的不异,不外利用了BGGA闭包提案:- doublebestGpa=students.withFilter({Students=>(s.graduationYear==THIS_YEAR)}).withMapping({Students=>s.gpa}).max();
复制代码 依据以后的情况估量,Java7会在2009年初期公布。
检察英文链接:ParallelismwithFork/JoininJava7
来自:http://www.infoq.com/cn/news/2008/03/fork_join
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net网页编程并驾齐驱的 |
|