假设我有一个非常简单的演员类,它接收任何消息并打印到控制台。
class SimpleActor extends Actor{
def receive: Receive = {
case message =>
println(s"[${this}][${self}] received message: ${message}")
}
}
val simpleActor = actorSystem.actorOf(Props[SimpleActor], "simpleActor")
simpleActor ! "Hey"
正如你所看到的,我同时使用this
和self
here,两者都有不同的值。它的输出类似于:
[pkg.ActorRunner$SimpleActor@65cca69][Actor[akka://ActorDemo/user/simpleActor#934141660]] received message: Hey
我想了解和之间的区别self
,this
因为在复杂场景(生产系统)中,如果演员中断,例如:抛出一个异常,而不是我认为的值this
会改变。