仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1748|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA编程:Java 7的并行撑持:Fork/Join仓酷云

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:35:22 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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提案:
  1. 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闭包提案:
  1. 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网页编程并驾齐驱的
柔情似水 该用户已被删除
21#
发表于 2015-4-24 18:43:46 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
山那边是海 该用户已被删除
20#
发表于 2015-4-22 12:28:52 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
变相怪杰 该用户已被删除
19#
发表于 2015-4-19 07:34:22 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
乐观 该用户已被删除
18#
发表于 2015-4-16 01:10:10 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
飘灵儿 该用户已被删除
17#
发表于 2015-4-9 20:12:05 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
活着的死人 该用户已被删除
16#
发表于 2015-4-9 08:39:16 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
老尸 该用户已被删除
15#
发表于 2015-3-27 10:12:13 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
小妖女 该用户已被删除
14#
发表于 2015-3-23 23:08:24 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
海妖 该用户已被删除
13#
发表于 2015-3-20 10:33:31 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
飘飘悠悠 该用户已被删除
12#
发表于 2015-3-19 15:32:02 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
再现理想 该用户已被删除
11#
发表于 2015-3-11 22:49:13 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
10#
 楼主| 发表于 2015-3-7 06:09:45 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
精灵巫婆 该用户已被删除
9#
发表于 2015-3-6 22:50:08 | 只看该作者
是一种为 Internet发展的计算机语言
透明 该用户已被删除
8#
发表于 2015-2-25 17:03:38 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
金色的骷髅 该用户已被删除
7#
发表于 2015-2-21 17:08:53 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
因胸联盟 该用户已被删除
6#
发表于 2015-2-11 19:08:11 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-7 01:13:49 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
第二个灵魂 该用户已被删除
地板
发表于 2015-1-31 23:43:50 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
admin 该用户已被删除
板凳
发表于 2015-1-30 15:32:22 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-11 08:08

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表