仓酷云
标题:
来看Java线程间通信概述
[打印本页]
作者:
再现理想
时间:
2015-1-18 11:00
标题:
来看Java线程间通信概述
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。
这个故事源自一个很复杂的设法:创立一个对开辟职员友爱的、复杂轻量的线程间通信框架,完整不用锁、同步器、旌旗灯号量、守候和关照,在Java里开辟一个轻量、无锁的线程内通信框架;而且也没有行列、动静、事务或任何其他并发公用的术语或工具。
只用一般的老式Java接话柄现POJO的通信。
它大概跟Akka的范例化actor相似,但作为一个必需超等轻量,而且要针对单台多核盘算机举行优化的新框架,谁人大概有点过了。
当actor超过分歧JVM实例(在统一台呆板上,或散布在收集上的分歧呆板上)的历程界限时,Akka框架很擅长处置历程间的通信。
但关于那种只必要线程间通信的小型项目而言,用Akka范例化actor大概有点儿像用牛刀杀鸡,不外类型化actor仍旧是一种幻想的完成体例。
我花了几地利间,用静态代办署理,堵塞行列弛缓存线程池创立了一个办理计划。
图一是这个框架的高条理架构:
登录/注册后可看大图
1124161218-0.png
(43.08 KB, 下载次数: 6)
下载附件
保存到相册
来看Java线程间通信概述
2015-1-18 11:00 上传
图一:框架的高条理架构
SPSC行列是指单平生产者/单一消耗者行列。MPSC行列是指多临盆者/单一消耗者行列。
派发线程卖力吸收Actor线程发送的动静,并把它们派发到对应的SPSC行列中往。
吸收到动静的Actor线程用个中的数据挪用响应的actor实例中的办法。借助其他actor的代办署理,actor实例能够将动静发送到MPSC行列中,然后动静会被发送给方针actor线程。
我创立了一个复杂的例子来测试,就是上面这个打乒乓球的程序:
publicinterfacePlayerA(
voidpong(longball);//发完就忘的办法挪用
}
publicinterfacePlayerB{
voidping(PlayerAplayerA,longball);//发完就忘的办法挪用
}
publicclassPlayerAImplimplementsPlayerA{
@Override
publicvoidpong(longball){
}
}
publicclassPlayerBImplimplementsPlayerB{
@Override
publicvoidping(PlayerAplayerA,longball){
playerA.pong(ball);
}
}
publicclassPingPongExample{
publicvoidtestPingPong(){
//办理器埋没了线程间通信的庞大性
//把持actor代办署理,actor完成和线程
ActorManagermanager=newActorManager();
//在办理器内注册actor完成
manager.registerImpl(PlayerAImpl.class);
manager.registerImpl(PlayerBImpl.class);
//创立actor代办署理。代办署理会将办法挪用转换成外部动静。
//会在线程间发给特定的actor实例。
PlayerAplayerA=manager.createActor(PlayerA.class);
PlayerBplayerB=manager.createActor(PlayerB.class);
for(inti=0;i<1000000;i++){
playerB.ping(playerA,i);
}
}
复制代码
<p>
你总不能说你写框架吧,那无疑会加大工作量,现在大多企业采取的是折中的办法,就是改别人写好的框架,可要改框架,前提是你对这个框架足够的了解,这就更难了。
作者:
山那边是海
时间:
2015-1-20 12:42
[url]http://www.ckuyun.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://www.ckuyun.com[/url]去下,安装上有什么问题,可以到论坛上去提问。
作者:
柔情似水
时间:
2015-1-20 13:49
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
作者:
分手快乐
时间:
2015-1-29 08:28
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
作者:
因胸联盟
时间:
2015-1-31 05:13
那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
作者:
谁可相欹
时间:
2015-2-6 17:25
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
作者:
简单生活
时间:
2015-2-17 16:12
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
作者:
admin
时间:
2015-3-5 20:40
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者:
深爱那片海
时间:
2015-3-12 14:50
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者:
活着的死人
时间:
2015-3-19 22:54
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2