主题 : java中Actor模型模型的应用
级别: 白丁
UID: 74003
积分:7 加为好友
威望: 0 精华: 0
主题:6 回复:9
注册时间:2015-04-10
在线时长:0
1#   发表于:2015-05-06 11:51:34  IP:183.244.*.*
   Actor模型提供了一个更高的抽象层次写并行和分布式系统。它减轻了开发人员从处理显式锁定和线

程管理,使它更容易编写正确的并发和并行系统。Actor是在卡尔休伊特1973进行界定,但已由Erlang语

言的推广和使用,例如在爱立信成功构建高并发和可靠的通信系统。
   
原文转载于www.toceansoft.com
创建 Actors
   1、定义一个Actor的类
   Actor在Java实现的扩展untypedactor类和执行onReceive方法。该方法将消息作为参数。
下面是一个例子:
   import akka.actor.UntypedActor;
   import akka.event.Logging;
   import akka.event.LoggingAdapter;
 
   public class MyUntypedActor extends UntypedActor {
       LoggingAdapter log = Logging.getLogger(getContext().system(), this);
 
   public void onReceive(Object message) throws Exception {
      if (message instanceof String)
           log.info("Received String message: {}", message);
     else
         unhandled(message);
      }
   }
  2、Props
  rops是一个配置类指定为Actor的创作选择。这里有一些例子说明如何创建一个道具实例。
  Props props1 = new Props();
Props props2 = new Props(MyUntypedActor.class);
Props props3 = new Props(new UntypedActorFactory() {
  public UntypedActor create() {
    return new MyUntypedActor();
  }
});
Props props4 = props1.withCreator(new UntypedActorFactory() {
  public UntypedActor create() {
    return new MyUntypedActor();
  }
});
  3、创建 Actors 和 Props
  Actors都是通过在一个Props到actorof的方法创建实例。
ActorRef myActor = system.actorOf(new Props(MyUntypedActor.class).withDispatcher

("my-dispatcher"), "myactor");
  4、创建具有默认构造函数的
   import akka.actor.ActorRef;
   import akka.actor.ActorSystem;
   import akka.actor.Props;
     ActorSystem system = ActorSystem.create("MySystem");
     ActorRef myActor = system.actorOf(new Props(MyUntypedActor.class), "myactor");

    通过呼叫actorof返回从而返回actorref实例。这是一个处理的untypedactor实例,你可以用它来与

untypedactor互动。这代表着ActorRef和Actor都是一一对应的关系,的actorref也是序列化的网络。这

意味着你可以将它,把它在无线和使用远程主机上,在网络上它仍然是代表原节点相同的Actor。
    在上面的例子中,Actor是从系统的创建。也可以创建与其他Actor背景。不同的是如何在监管层次

设置。当使用上下文的当前Actor将所创建的子代Actor的主管。使用该系统,这将是一个顶级的Actor时

,是由系统监督。
public class FirstUntypedActor extends UntypedActor {
  ActorRef myActor = getContext().actorOf(new Props(MyActor.class), "myactor");
    名称参数是可选的,但你最好叫你的Actor,因为这是用在日志消息和确定Actor。名称不能为空或

开始$。如果给定的名称已在使用由另一个孩子同父母的Actor那就会被invalidactornameexception抛出


    Actor开始创建时自动同步。当你创建untypedactor然后它会自动调用的回调方法untypedactor类前

。这是一个为Actor添加初始化代码的好地方。


1 共1页