演员没有回应

时间:2012-07-10 03:34:30

标签: scala actor scala-2.9

看一下代码片段:

import scala.actors.Actor._

object ActorTest1 extends Application {
  val caller = self

  val badActor = actor {
     receive {
        case msg =>
          println(Thread.currentThread()+ " "+msg)
          caller ! "bbbb"
     }
  }

  badActor ! "aaaa"
  receive {
     case a: String => println(Thread.currentThread() + " " + a)
  }

}

badActor对发送者产生共鸣“bbbb”后,整个应用程序阻塞。但是,如果我将caller ! "bbbb"更改为sender ! "bbbb",它就能正常运行。

有人可以解释为什么吗?

1 个答案:

答案 0 :(得分:2)

我认为你的调用者引用实际上是对self的引用,而不是actor实例! : - )

而不是发件人是一个有效的实例,你可以在这里看到: http://doc.akka.io/docs/akka/snapshot/scala/actors.html