终止Akka中的actor系统

时间:2013-12-21 21:55:32

标签: scala akka

一旦所有子演员完成处理,如何终止演员系统。我尝试过使用以下内容:system.awaitTerminationsystem.shutdown。结果不是预期的结果。

2 个答案:

答案 0 :(得分:5)

演员实际上并没有“完成他们的处理” - 他们仍然会在系统中,等待事件处理。

所以,为了阻止它,你实际上必须明确地处理所有演员已经完成他们的工作的情况,例如,主演员希望演员在工作完成时发送消息,如果全部演员们完成了他们的任务,关闭了系统。

我建议阅读nice article by Derek Wyatt(并实际阅读他的书)以获取类似的标准内容。同一作者在同一网站上有一个bit more advanced pattern

答案 1 :(得分:-1)

//我就是这样做的。

helloActor ! PoisonPill.getInstance // send this to all ActorRef in ActorSystem

while (!helloActor.isTerminated) { // check each ActorRef is terminated
  println("sleep")
  Thread.sleep(100)
}
actorSystem.shutdown
相关问题