摘要:AKKA 是一款基于actor模型实现的 并发处理框架。基于事件驱动的并发处理模型,每一个actor拥有自己的属性和操作,这样就避免了通常情况下因为多个线程之间要共享属性(数据)而是用锁机制的处理。这种机制在scala,cloure 语言中应用的很好,将操作和属性放在一个独立的单元中进行处理,从而提高并发处理的能力。
AKKA 是一款基于actor模型实现的 并发处理框架。基于事件驱动的并发处理模型,每一个actor拥有自己的属性和操作,这样就避免了通常情况下因为多个线程之间要共享属性(数据)而是用锁机制的处理。这种机制在scala,cloure 语言中应用的很好,将操作和属性放在一个独立的单元中进行处理,从而提高并发处理的能力。
下面用一个最简单的helloword作为进入akka世界的开始。
功能描述:
实现通过一个actior发送消息到另一个actor然后将处理结果返回,感觉很简单类似两个类的方法调用,但是这里实际上的处理时异步的并非同步的调用处理,这里神奇的地方就在于AKKA的内部机制了后续再做深入研究。
HelloWorld 类
Java代码 1. package com.huawei.akka; 2. 3. import akka.actor.Props; 4. import akka.actor.UntypedActor; 5. import akka.actor.ActorRef; 6. public class HelloWorld extends UntypedActor { 7. 8. @Override 9. public void preStart() { 10. // create the greeter actor 11. final ActorRef greeter = 12. getContext().actorOf(Props.create(Greeter.class), "greeter");//创建greeter actor实例 13. // tell it to perform the greeting 14. greeter.tell(Greeter.Msg.GREET, getSelf());//通过tell方法给greeter actor 发送一条消息 15. } 16. 17. @Override 18. public void onReceive(Object msg) { 19. if (msg == Greeter.Msg.DONE) { 20. // when the greeter is done, stop this actor and with it the application 21. getContext().stop(getSelf()); 22. } else unhandled(msg); 23. } 24. }
Greeter类
Java代码
1. package com.huawei.akka; 2. 3. import akka.actor.UntypedActor; 4. 5. public class Greeter extends UntypedActor { 6. 7. public static enum Msg { 8. GREET, DONE; 9. } 10. 11. @Override 12. public void onReceive(Object msg) { 13. if (msg == Msg.GREET) { 14. System.out.println("Hello World!"); 15. getSender().tell(Msg.DONE, getSelf()); 16. } else unhandled(msg); 17. } 18. 19. }
运行HelloWorld类,akka提供了一个主actor类,可以通过这个类直接执行以上的方法,在eclipse中在helloworld类中点击 open run dailoge,然后在Main.class 选项中输入akka.Main,然后选择arguments 在program arguments 中输入 com.huawei.akka.HelloWorld,点击 apply 然后运行结果如下:
Java代码
1. Hello World! 2. [INFO] [09/15/2013 15:06:33.125] [Main-akka.actor.default-dispatcher-5] [akka://Main/user/app-terminator] application supervisor has terminated, shutting down
从运行结果可以看出,HelloWorld actor正确的调用了 Greeter actor 因为输出了 Hello World!从Infor日志可以看出 HelloWorld actor 正常接收到了 Greeter actor 的返回停止了当前actor。
希望这篇文章可以帮助到你,总之同学们,it资讯尽在职坐标。
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号