当前位置: 首页 > 知识库问答 >
问题:

构造函数与预启动:何时使用哪个?

梁才
2023-03-14

在Akka中,您可以在构造函数中初始化参与者的状态。此外,作为参与者生命周期的一部分,可以重写prestart方法来初始化参与者的状态,并将调用:

  • 第一次启动执行元时,在它开始处理第一条消息之前
  • 重新启动执行元时,除非重写postrestart以不调用它

这两种方式(构造函数和prestart)似乎涵盖了参与者启动阶段的重叠阶段,稍有不同的是,构造函数保证在重新启动时被调用,而prestart可以跳过,前提是重写postrestart

关于在哪种情况下使用哪一种,是否有公认的或文档化的最佳实践或模式?

共有1个答案

令狐灿
2023-03-14

通过构造函数初始化的文档:

使用构造函数进行初始化有各种好处。首先,它可以使用val字段来存储在参与者实例生命周期内不改变的任何状态,从而使参与者的实现更加健壮。当调用actorof创建actor实例时,以及在重新启动时都会调用构造函数,因此actor的内部可以始终假定发生了正确的初始化。

来自通过Prestart初始化的文档:

 类似资料:
  • 构造函数与析构函数是自动调用的。这些函数的调用顺序取决于执行过程进入和离开实例化对象范围的顺序。一般来说,析构函数的调用顺序与构造函数相反。但图6.9将介绍对象存储类可以改变析构函数的调用顺序。 全局范围中定义的对象的构造函数在文件中的任何其他函数(包括 main)执行之前调用(但不同文件之间全局对象构造函数的执行顺序是不确定的)。当main终止或调用exit函数时(见第18章)调用相应的析构函数

  • 我有这个问题,这让我发疯,我有这个课程 在我的主类中,我实例化了前一个类,并且可以毫无问题地访问属性 但是当它编译它返回给我一个错误: 线程“main”java中出现异常。lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver设置。壁虎。驱动系统属性;有关更多信息,请参阅https://github.com/mozilla/geckodriver.最

  • 问题内容: 我了解到Android 具有特定的生命周期,应该重写该生命周期并将其用于初始化,但是构造函数中到底发生了什么?在任何情况下,您也可以/应该重写构造函数,或者永远不要触摸它? 我假设永远不要使用构造函数,因为不会完全清除对的引用(从而妨碍了垃圾收集器),并且为此目的而存在。这样对吗? 问题答案: 我想不出有什么充分的理由在构造函数中做任何事情。您永远不会直接构造活动,因此无法使用它来传递

  • 本文向大家介绍php构造函数与析构函数,包括了php构造函数与析构函数的使用技巧和注意事项,需要的朋友参考一下 php构造函数是对象创建完成后,第一个自动调用的方法,析构函数是当对象被释放之前最后一个自动调用的方法。本文章向大家介绍php构造函数与析构函数。 php构造函数 1.是对象创建完成后,“第一个”“自动调用”的方法 2.构造方法的定义,方法名是一个固定的, 在php4中:和类名相同的方法

  • 我尝试用注释,但没有没有参数的构造函数。即使我添加了一个不带参数的构造函数,也是,因此在初始化之后不能设置它。而且有一个只带参数的构造函数。 在初始化之后,我需要将其放置在内存中,并且需要能够在其他组件中自动连接它以读取/删除/添加项。我不知道怎么用Spring靴做这件事。非常感谢任何帮助。

  • 问题内容: 有人可以澄清Javascript中的构造函数和工厂函数之间的区别。 何时使用一个代替另一个? 问题答案: 基本区别在于,构造函数与关键字一起使用(这会使JavaScript自动创建一个新对象,在该函数内将该对象设置为该对象,然后返回该对象): 工厂函数的调用类似于“常规”函数: 但是要使其成为“工厂”,就需要返回某个对象的新实例:如果它仅返回布尔值或其他内容,则不会将其称为“工厂”函数