一旦所有子演员完成处理,如何终止演员系统。我尝试过使用以下内容:system.awaitTermination
和system.shutdown
。结果不是预期的结果。
答案 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