Akka之Hello World

Akka介绍

http://blog.csdn.net/liubenlong007/article/details/53782966

Actor介绍

在使用Akka进行并行程序开发时,我们的关注点不在线程,因为线程调度已经被Akka框架进行封装,我们关注一个全新的执行单元,就是Actor,Actor对象之间的交流和一般的对象的函数调用不一样,它们是通过显示的消息发送来传递信息的

hello world

1、第一个Actor的实现

继承UntypedActor,注意这个是无类型的

public class Greeter extends UntypedActor{

    //消息类型:欢迎、完成
    public static enum Msg{
        Greet,DONE;
    }
    @Override
    public void onReceive(Object msg) throws Exception {
        if(msg==Msg.Greet){ //当收到GREET消息时,打印"Hello World"
            System.out.println("Hello World");
            getSender().tell(Msg.DONE, getSelf());//,并向消息发送方发送DONE信息
        }else
        {
            unhandled(msg);//没有收到就不处理
        }
    }

}

2、与Greeter交流的另一个Actor:HelloWorld

public class HelloWorld extends UntypedActor{

    ActorRef greeter;


    //该方法在Actor启动前,会被Akka框架调用,完成初始化的工作
    @Override
    public void preStart() throws Exception {
        //使用HelloWorld上下文创建Greeter的实例
        greeter=getContext().actorOf(Props.create(Greeter.class),"greeter");
        System.out.println("Greeter Actor Path:"+greeter.path());
        greeter.tell(Greeter.Msg.Greet, getSelf());
    }
    @Override
    public void onReceive(Object msg) throws Exception {
        if(msg==Greeter.Msg.DONE){
            //当收到DONE消息,再给greeter发送Greeter消息,然后将自己停止
            greeter.tell(Greeter.Msg.Greet, getSelf());
            getContext().stop(getSelf());
        }else{
            unhandled(msg);
        }

    }

}

主函数

创建了ActorSystem ,表示管理和维护Actor的系统,ActorSystem.create( )第一个参数”Hello”是系统名称,第二个参数是配置文件

public class HelloMainSimple {
     public static void main(String[] args) {
        ActorSystem system=ActorSystem.create("Hello",ConfigFactory.load("samplehello.conf"));
        ActorRef a=system.actorOf(Props.create(HelloWorld.class),"helloWorld");
        System.out.println("HelloWorld Actor Path:"+a.path());
    }
}

注意不要在Actor内执行耗时操作,这样会导致其他Actor的调度出现问题

参考:《Java高并发程序设计》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值