看一下代码片段:
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"
,它就能正常运行。
有人可以解释为什么吗?
答案 0 :(得分:2)
我认为你的调用者引用实际上是对self的引用,而不是actor实例! : - )
而不是发件人是一个有效的实例,你可以在这里看到: http://doc.akka.io/docs/akka/snapshot/scala/actors.html