Reactor定义了一个getState方法,这个方法可以将Actor当前的运行状态作为Actor.State枚举的一个成员返回。一个尚未运行的Actor处于Actor.State.New状态。一个能够运行并且不在等待消息的Actor处于Actor.State.Runnable状态。一个已挂起,并正在等待消息的Ac⁃tor处于Actor.State.Suspended状态;一个已终止的Actor处于Actor.State.Terminated状态。例9-4演示Actor运行状态,并在终端上打印出来。
【例9-4】Actor的运行状态示例。
在终端中输入上面的程序,程序执行结果如图9-5所示。
从程序的执行结果可以看出,在调用Actor的start方法之前,Actor是一个New状态,对应枚举Actor.State.New成员,当调用了start方法启动了Actor之后,Actor状态变为Runnable,对应枚举Actor.State.Runnable值,Actor执行完(www.daowen.com)
图9-5 Actor程序状态输出结果act方法后自动退出,退出后打印出状态为Terninated,该值对应枚举Actor.State.Terminated值,然后再次调用该Actor的act方法,可以看到程序再次执行了act方法。
经过上面的测试,可以总结Scala中Actor的生命周期为:当调用start方法启动Actor时,start调用doStart方法,在doStart方法中,程序调用preAct方法,紧接着调用act方法,而act方法是实现Actor时必须重写的方法。当执行完act方法后,Actor自然退出,当然也可以调用Actor的exit方法,该方法总返回Nothing。当Actor完全退出后,可以调用restart方法重新启动Actor运行。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。