理论教育 Scala语言基础:Actor状态变化

Scala语言基础:Actor状态变化

时间:2023-11-24 理论教育 版权反馈
【摘要】:Reactor定义了一个getState方法,这个方法可以将Actor当前的运行状态作为Actor.State枚举的一个成员返回。一个已挂起,并正在等待消息的Actor处于Actor.State.Suspended状态;一个已终止的Actor处于Actor.State.Terminated状态。例9-4演示Actor运行状态,并在终端上打印出来。当执行完act方法后,Actor自然退出,当然也可以调用Actor的exit方法,该方法总返回Nothing。当Actor完全退出后,可以调用restart方法重新启动Actor运行。

Scala语言基础:Actor状态变化

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的运行状态示例。

978-7-111-54169-1-Chapter09-8.jpg

在终端中输入上面的程序,程序执行结果如图9-5所示。

从程序的执行结果可以看出,在调用Actor的start方法之前,Actor是一个New状态,对应枚举Actor.State.New成员,当调用了start方法启动了Actor之后,Actor状态变为Runnable,对应枚举Actor.State.Runnable值,Actor执行完(www.daowen.com)

978-7-111-54169-1-Chapter09-9.jpg

图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运行。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈