JDK7新特性五 fork/join 框架对于框架的原理,可以阅读 Doug Lea 的文章“A Java Fork/Join Framework”:了
JDK7新特性<五> fork/join 框架
对于框架的原理,可以阅读 Doug Lea 的文章“A Java Fork/Join Framework”:了解 Fork/Join 模式的实现机制和执行性能。
?
?
?图片来源(http://www.ibm.com/developerworks/cn/java/j-lo-forkjoin/index.html)
?
?
?
?
用途
? ? 只要问题能够分解成类似子问题的,都可以使用这个框架。对于大批量的数据尤其合适
?
??参考资料
? ? Jdk7官网?http://openjdk.java.net/projects/jdk7/
??
??
?
?
? ?(注:这篇文章发表时,JDK7未正式公布,可能有误差,具体以官方正式版为准)
?
更多的jdk7文章,欢迎访问http://janeky.iteye.com/category/157060
?
?
?
1 楼 jxb8901 2011-05-18 我们在实际应用中有如下应用场景或许可以考虑使用该并行框架来实现:
1、账户计息:系统需要对数百万账户进行利息计算和处理。如果采用JDK7的并行计算框架,那么任务的拆分可以按账号分段来实现,计算结果通常不需要汇总;
2、绩效指标计算:系统需要对数百万客户计算绩效指标,该指标计算完成后,又需要基于这些指标计算更上层的指标。对客户的指标计算可以按客户号分段,指标结果或许可以归并起来用于计算更上层指标;
但JDK7的并行计算框架只是给我们屏蔽了多线程并行执行的技术细节,其它比如:中间计算结果和计算状态的持久化问题、子任务的动态管理和结果轮询等问题还是需要我们自己开发应用框架来解决。
2 楼 diggywang 2011-05-18 Map--Reduce! 3 楼 BruceXX 2011-05-18 把map reduce引入了。。 4 楼 ray_linn 2011-05-18 明明是map reduce,搞个屁名字 5 楼 jentrees 2011-05-18 java7 给力!
java7在语言级别增加并发计算能力,值得期待 6 楼 janeky 2011-05-19 jxb8901 写道我们在实际应用中有如下应用场景或许可以考虑使用该并行框架来实现:
1、账户计息:系统需要对数百万账户进行利息计算和处理。如果采用JDK7的并行计算框架,那么任务的拆分可以按账号分段来实现,计算结果通常不需要汇总;
2、绩效指标计算:系统需要对数百万客户计算绩效指标,该指标计算完成后,又需要基于这些指标计算更上层的指标。对客户的指标计算可以按客户号分段,指标结果或许可以归并起来用于计算更上层指标;
但JDK7的并行计算框架只是给我们屏蔽了多线程并行执行的技术细节,其它比如:中间计算结果和计算状态的持久化问题、子任务的动态管理和结果轮询等问题还是需要我们自己开发应用框架来解决。
数据量大,算法稳定的,可以考虑用这个框架 7 楼 ray_linn 2011-05-19 说实话,Java 7的fork/join远比C# TPL丑陋(学师傅也只学了办拉子),原因是闭包被从Java 7中抽走了,本来可以象C# python一样写的很简单的代码成了大面条:
有闭包的Java代码应该是这样的:
double bestGpa = students.withFilter({Student s => (s.graduationYear == THIS_YEAR) }) .withMapping({ Student s => s.gpa }) .max(); 8 楼 jilen 2011-05-19 ray_linn 写道说实话,Java 7的fork/join远比C# TPL丑陋(学师傅也只学了办拉子),原因是闭包被从Java 7中抽走了,本来可以象C# python一样写的很简单的代码成了大面条:
有闭包的Java代码应该是这样的:
double bestGpa = students.withFilter({Student s => (s.graduationYear == THIS_YEAR) }) .withMapping({ Student s => s.gpa }) .max();
特性越来越多,平台越来越臃肿了,希望不会出现最后各种编码风格混乱不堪的情形。希望可以变得更简洁更优雅 9 楼 ray_linn 2011-05-19 jilen 写道ray_linn 写道说实话,Java 7的fork/join远比C# TPL丑陋(学师傅也只学了办拉子),原因是闭包被从Java 7中抽走了,本来可以象C# python一样写的很简单的代码成了大面条:
有闭包的Java代码应该是这样的:
double bestGpa = students.withFilter({Student s => (s.graduationYear == THIS_YEAR) }) .withMapping({ Student s => s.gpa }) .max();
特性越来越多,平台越来越臃肿了,希望不会出现最后各种编码风格混乱不堪的情形。希望可以变得更简洁更优雅
应该取消那些静态内部类,匿名类,拿掉垃圾的awt和含糊不清的io,重新定义java.util名称空间,这个包完全就是垃圾堆,无任何优雅可言。