Actor的生命周期
我们已经知道,actor可以重启进行故障恢复。 但是在重启的过程中,我们如何更改actor的状态? 为了回答这个问题,我们需要详细的看看actor的生命周期。 actor在被创建后,就被Akka自动启动了。 actor会一直处于启动状态,直到被停止。 然后进入终止状态。 终止状态的actor不能处理消息,最终会被垃圾回收。 启动状态的actor可以被重启和设置内部状态。 如我们前面所说,actor实例可以被新的actor实例替换。 如果有必要,可以多次重启。 在actor的生命周期中,有三种类型的事件:
1.  简单起见,创建和启动作为启动事件。
2.  重启作为重启事件。
3.  停止作为停止事件。
在Actor trait中有几个钩子,当表示生命周期状态发生变化的事件发生时,会被调用。 我们可以添加一些自定义代码供这些钩子函数调用,当创建新的实例时,进入特定的状态,在重启前处理错误消息,或者清理实例的资源。 下一节,我们将看看这三种事件和这些钩子如何调用自定义代码。 尽管这些钩子被Akka异步调用,但是顺序是固定。
启动事件
用actorOf函数创建actor后,actor自动启动。 顶级的actor由actorSystem的actorOf函数创建。 父actor通过ActorContext的actorOf函数创建子actor。

actor创建后会被Akka自动启动。 preStart钩子函数会在启动之前被调用。 要用这个触发器,我们必须重写preStart函数。
    override def preStart() {
        println("preStart") // do some work
    }
这个钩子可以用来设置actor的初始状态。