码迷,mamicode.com
首页 > 其他好文 > 详细

Akka初探

时间:2015-05-27 12:36:53      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:

package akka

import akka.actor.Actor
import akka.actor.ActorSystem
import akka.actor.Props

class HelloActor extends Actor {
  def receive = {
    case "hello" => println("world")
    case _       => println("huh?")
  }

}

  

package akka

import akka.actor.ActorSystem
import akka.actor.Props

object Test{
  
  val system = ActorSystem("HelloSystem")
  // default Actor constructor
  val helloActor = system.actorOf(Props[HelloActor], name = "helloactor")
  
  def main(args: Array[String]): Unit = {
    println(helloActor ! "")
  }

Actors非常轻量,大约600字节,这样4 G RAM可以容纳6.5 百万个Actors

Akka的Actor我们可以比照人类社会,每个Actor可以看成一个人,具有某些工作能力(比如管理其它人员,回答某些问题)。

我们第一个例子,是定义一个HelloActor, 如果有人问他”Hello”,它可以回答”World”,如果问他其它问题,它不能回答,就以”huh?”答复。

从 Scala2.10起,Akka 作为Scala 开发包的一部分发布,因此无需另外添加引用,可以直接在Scala 命令行使用。本例我们定义了一个HelloActor, 它派生于类Actor,每个Actor有自己的消息队列,可以接受消息,然后对消息进行处理,这里通过定义receive方法来实现的,本例 HelloActor只处理“Hello”消息,返回”world”,而对其他消息都以”huh?”回答。

有 了这个HelloActor定义,我们可以把它应用到Akka 的Actor系统中,注意Actor的实例是不能直接使用new 来创建的。而是使用系统的actorOf方法来创建,注意Actor之间有层次关系(和人类社会一样)。下面我们看如何来创建HelloActor的实 例:


Actor 为一对象,这个对象具有内部状态和定义了一些行为,它们之间通信只能通过在接受方的邮箱投放消息的方式进行。从某种意义上讲,Actor是最能体现面向对 象编程的一种形式,但如果我们把Actor看成人来看可能更为直观。我们在为应用建立模型时,可以想象有一组人,然后给他们分配一些任务,并把他们按照职 能定义不同的组织机构并且考虑如何处理系统的异常情况。

注意:一个Actor系统资源消耗比较大,需要分配多个线程,因此对于一个应用来说,创建一个Actor系统就可以了。




Akka初探

标签:

原文地址:http://my.oschina.net/moks/blog/420409

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!