仓酷云

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

[学习教程] 来看一个用于完成并行实行的 Java actor 库

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:02:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。
即便Java6和Java7中引进并发性更新,Java言语仍旧没法让并行编程变得出格简单。Java线程、synchronized代码块、wait/notify和java.util.concurrent包都具有本人的地位,但面临多核体系的容量压力,Java开辟职员正在依托其他言语中创始的手艺。actor模子就是如许一项手艺,它已在Erlang、Groovy和Scala中完成。本文为那些但愿体验actor但又要持续编写Java代码的开辟职员带来了μJavaActors库。
μJavaActors库是一个松散的库,用于在Java平台上完成基于actor的体系(μ暗示希腊字母Mμ,意指“微型”)。在本文中,我利用μJavaActors切磋actor在Producer/Consumer和Map/Reduce等罕见计划形式中的事情道理。
您随时能够下载μJavaActors库的源代码。
Java平台上的actor并发性
这个称号有何寄义?具有任何其他称号的actor也合用!
基于actor的体系经由过程完成一种动静传送形式,使并行处置更简单编码。在此形式中,体系中的每一个actor都可接收动静;实行该动静所暗示的操纵;然后将动静发送给其他actor(包含它们本人)以实行庞大的操纵序列。actor之间的一切动静是异步的,这意味着发送者会在收就任何复兴之前持续举行处置。因而,一个actor大概毕生都堕入吸收和处置动静的无穷轮回中。
当利用多个actor时,自力的举动可轻松分派到多个可并行实行动静的线程上(进而分派在多个处置器上)。一样平常而言,每一个actor都在一个自力线程上处置动静。一些actor体系静态地向actor分派线程;而其他体系(好比本文中先容的体系)则会静态地分派它们。
μJavaActors简介
μJavaActors是actor体系的一个复杂的Java完成。只要1,200行代码,μJavaActors固然很小,但很壮大。鄙人面的实习中,您将进修怎样利用μJavaActors静态地创立和办理actor,将动静传送给它们。
μJavaActors环绕3个中心界面而构建:
动静是在actor之间发送的动静。Message是3个(可选的)值和一些举动的容器:
source是发送actor。
subject是界说动静寄义的字符串(也称为命令)。
data是动静的任何参数数据;一般是一个映照、列表或数组。参数能够是要处置和/或其他actor要与之交互的数据。
subjectMatches()反省动静主题是不是与字符串或正则表达式婚配。
μJavaActors包的默许动静类是DefaultMessage。
ActorManager是一个actor办理器。它卖力向actor分派线程(进而分派处置器)来处置动静。ActorManager拥有以下关头举动或特性:
createActor()创立一个actor并将它与此办理器相干联。
startActor()启动一个actor。
detachActor()中断一个actor并将它与此办理器断开。
send()/broadcast()将一条动静发送给一个actor、一组actor、一个种别中的任何actor或一切actor。
在年夜部分程序中,只要一个ActorManager,但假如您但愿办理多个线程和/或actor池,也能够有多个ActorManager。此接口的默许完成是DefaultActorManager。
Actor是一个实行单位,一次处置一条动静。Actor具有以下关头举动或特性:
每一个actor有一个name,该称号在每一个ActorManager中必需是唯一的。
每一个actor属于一个category;种别是一种向一组actor中的一个成员发送动静的体例。一个actor一次只能属于一个种别。
只需ActorManager能够供应一个实行actor的线程,体系就会挪用receive()。为了坚持最高效力,actor应当迅速处置动静,而不要进进冗长的守候形态(好比守候工资输出)。
willReceive()同意actor过滤潜伏的动静主题。
peek()同意该actor和其他actor检察是不是存在挂起的动静(也许是为了选择主题)。
remove()同意该actor和其他actor删除或作废任何还没有处置的动静。
getMessageCount()同意该actor和其他actor猎取挂起的动静数目。
getMaxMessageCount()同意actor限定撑持的挂起动静数目;此办法可用于防备不受把持地发送。
年夜部分程序都有很多actor,这些actor经常具有分歧的范例。actor可在程序启动时创立或在程序实行时创立(和销毁)。本文中的actor包包括一个名为AbstractActor的笼统类,actor完成基于该类。
显现了actor之间的干系。每一个actor可向其他actor发送动静。这些动静保留在一个动静行列(也称为邮箱;从观点上讲,每一个actor有一个行列,当ActorManager看到某个线程可用于处置动静时,就会从行列中删除该动静,并将它传送给在线程下运转的actor,以便处置该动静。
.actor之间的干系

μJavaActors的并行实行功效
如今您已可入手下手利用μJavaActors完成并行实行了。起首要创立一组actor。这些是复杂的actor,因为它们所做的只是提早大批工夫并将动静发送给其他actor。如许做的效果是创立一个动静风暴,您起首会看到怎样创立actor,然后会看到怎样慢慢分拨它们来处置动静。
<p>
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,
活着的死人 该用户已被删除
沙发
发表于 2015-1-20 12:55:25 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
小妖女 该用户已被删除
板凳
发表于 2015-1-29 07:10:19 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-5 23:57:32 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
老尸 该用户已被删除
5#
发表于 2015-2-14 09:45:39 | 只看该作者
是一种为 Internet发展的计算机语言
若相依 该用户已被删除
6#
发表于 2015-3-4 05:26:18 | 只看该作者
是一种为 Internet发展的计算机语言
精灵巫婆 该用户已被删除
7#
发表于 2015-3-11 17:31:15 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
第二个灵魂 该用户已被删除
8#
发表于 2015-3-19 03:49:36 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-27 07:10:25 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 08:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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