演员,演员实例和演员参考之间有什么区别

What is diffrence between actor, actor instance and actorref

代码上下文中的 Actor 实际上是什么。是扩展 UnTypedActor 的 java class 吗?即 1 个演员=1 Class。 如果是,我们是否有它的多个实例,使用 actorref 简单引用。同一个 actor 的多个 actorref 实例有何不同?

actor 失败或 actor 重启是什么意思?我们只是用最后保存的数据变量重新加载 class 吗?

Actor 的行为在代码中由其 class 表示。

  • 在运行时,一个逻辑参与者在系统中有一个(但不总是相同的)实例(在 GC 之前内存中可能有更多实例)。
  • 一个class可能对应几个逻辑actor——每个都有不同的地址。
  • Actor 实例是在 Actors 系统中寻址的 UntypedActor(或者在 scala 中只是 Actor)的一个实例。
  • ActorRef 是对那个(本地或远程)的引用,但并不总是相同的实例(它在 actor 重新启动时发生变化),例如到具有自己地址的一个逻辑 Actor。

简单来说,失败就是从 onReceive(Scala 中的 receive)方法中抛出异常。当 actor 失败时,它会向其 supervisor 发送 Terminated 消息,并且(取决于 SupervisorStrategy)可能会重新启动或停止。重启意味着:

  • 调用 actor 实例的 preRestart 方法
  • 正在创建新实例(重新创建后将在同一个 ActorRef 中引用)
  • 正在调用新创建的实例的 postRestart 方法。 Actor 的状态在 preRestart.
  • 后丢失