重用现有演员?

时间:2014-10-23 13:22:15

标签: java scala akka

创建演员后:

final ActorRef greeter = getContext().actorOf(
        Props.create(MyActor.class , "myactor"));

可以重新引用同一个演员吗?原因我问我正在尝试将一些数据存储在一个可以被其他参与者引用的actor中。

重新调用“greeter”时会发生什么:

final ActorRef greeter = getContext().actorOf(
        Props.create(MyActor.class , "myactor"));

“绿色”演员是否重新实例化了?

1 个答案:

答案 0 :(得分:3)

如果您使用同一个类多次调用actorOf,那么您获得的是该actor的多个实例,因此它们不会共享状态。如果您尝试使用相同的路径创建多个actor,则会出现错误 - 正如所说的那样,只有一个actor可以生活在同一条路径上。

你可以从它的路径看一个演员。阅读更多关于akka文档中的actor路径的信息: http://doc.akka.io/docs/akka/2.3.6/general/addressing.html

或者,也许更好的选择 - 不那么脆弱,传递actorRef。 ActorRef是不可变的,因此它们可以安全地作为消息发送,因此如果您在另一个内部创建actor,您可以定义一个协议,以便从其父级请求引用它。

相关问题