演员,演员实例和演员参考之间有什么区别
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
. 后丢失
代码上下文中的 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
. 后丢失