java中的Actor模式 Akka实例
来源:互联网 发布:软件售后服务合同范本 编辑:程序博客网 时间:2024/06/08 00:32
感觉Actor模式和面向对象都把现实世界抽象成一个很简单的模式。都是很牛逼的一种哲学思想
简单的说,
面向对象是把所有的东西都抽象成对象。
Actor是吧所有的消息传递抽象成一种抽象的模式。
下面看看java中是如何实现Actor模式的
以下就是一个非常简单的Akka例子:
package com.yonder.akka.test;import akka.actor.ActorRef;import akka.actor.ActorSystem;import akka.actor.Props;/** * @author cyd * @date 2015-3-24 */public class ActorSystemTools {private static ActorSystem actorSystem = null;public static void start() {System.out.println("start actorSystem...");actorSystem = ActorSystem.create();}@SuppressWarnings("unchecked")public static ActorRef actorOf(Class clazz) {return actorSystem.actorOf(Props.create(clazz));}public static void shutdown() {System.out.println("shutdown actorSystem...");actorSystem.shutdown();}}
package com.yonder.akka.test;import akka.actor.UntypedActor;/** * @author cyd * @date 2015-3-24 */public class AngryFoalActor extends UntypedActor {public void onReceive(Object message) throws Exception {System.out.println("AngryFoalActor receive message : " + message);getSender().tell("hello! I am AngryFoalActor!", getSelf());}}
package com.yonder.akka.test;import akka.actor.UntypedActor;/** * @author cyd * @date 2015-3-24 */public class LazyFoalActor extends UntypedActor {@Overridepublic void onReceive(Object message) throws Exception {System.out.println("LazyFoalActor receive message : " + message);}}
package com.yonder.akka.test;import akka.actor.ActorRef;/** * @author cyd * @date 2015-3-25 */public class Main {public static void main(String[] args) {ActorSystemTools.start();ActorRef angryFoal = ActorSystemTools.actorOf(AngryFoalActor.class);ActorRef lazyFoal = ActorSystemTools.actorOf(LazyFoalActor.class);angryFoal.tell("hello! I am LazyFoalActor!", lazyFoal);}}
运行结果:
start actorSystem...AngryFoalActor receive message : hello! I am LazyFoalActor!LazyFoalActor receive message : hello! I am AngryFoalActor!
ActorSystemTools是作为Actor系统的管理类,负责Actor系统的初始化、Actor对象创建、系统的关闭
angryFoal(AngryFoalActor)、lazyFoal(LazyFoalActor)是两个Actor对象(也就是Actor模型中消息的发送、接受者)
Main就是整个例子的入口
例子中系统启动后发送一个消息 "hello! I am LazyFoalActor!" 给angryFoal,消息发送者是lazyFoal。
angryFoal在接收到消息后,给消息的发送者发送回复消息 "hello! I am AngryFoalActor!"
这样就是一个Actor消息模型的简单例子。当然Actor模型不仅仅能处理这种简单的消息传递,采用Actor来处理一些需要并发的业务逻辑也可以使一些原本需要手动来添加同步锁的复杂逻辑变得更加简单。Actor消息还支持跨服务器的发送,这样就可以用Actor来进行网络通信。具体的使用方式将在后续的文章中与大家分享探讨。
akka相关的可能需要引用到的jar包:
scala-library-2.11.1.jar
akka-actor_2.11-2.3.4.jar
akka-remote_2.11-2.3.4.jar
akka-slf4j_2.11-2.3.4.jar
可以到http://www.java2s.com/Code/Jar/a/akka.htm上查找下载相关的jar包
- java中的Actor模式 Akka实例
- akka学习教程(八) Actor中的Future-询问模式
- akka学习教程(八) Actor中的Future-询问模式
- Akka actor
- Scala---Akka Actor(二)actor创建以及Ask模式
- Akka 模仿 actor
- actor框架-Akka
- Akka 【二】Create Actor
- Akka 编程: 什么是Actor
- [akka] Actor的生命周期
- Akka Actor System
- Actor Model & Akka
- akka---actor模型
- akka访问远程Actor
- akka-actor(fb)
- akka-actor(嘿咻demo)
- 【Akka】Actor引用
- 【Akka】Actor模型探索
- 我的第一次份实习工作-iOS实习生-第二个月
- java 泛型使用详解 + 总结
- Android学习(4)---Genymotion的使用
- lvs +keepalived负载均衡
- python version 2.7 required,which was not found in the registry
- java中的Actor模式 Akka实例
- IOS开发 3DTouch
- <?php ?> 与<? ?>的区别
- tomcat正常启动,但是通过IP不能访问web
- 移动App架构设计
- 新手之服务端创建服务以及客户端的实现
- scanf 函数缓冲区
- android窗体动画:activity启动从底部向上滑动出现,关闭的时候从顶部向下滑动消失的动画实现
- Striving for Simplicity: The All Convolutional Net