scala play:如何在自动重建时杀死旧角色/线程?

scala play:如何在自动重建时杀死旧角色/线程?,scala,playframework,actor,Scala,Playframework,Actor,我有一个play应用程序,其中我使用的演员可以做一些持续的工作/监控 e、 g 在我的代码中,我只启动了这个演员一次。 我的问题是,每当play自动重建应用程序时(由于源代码更改),它都会创建一个新的参与者,但不会删除旧的参与者。 如果使用线程(包括守护进程线程)而不是参与者进行监视,则会发生完全相同的情况 除了手动重新启动应用程序(我可以在每次更改时自动重新启动应用程序)之外,是否有其他方法可以在自动重建时杀死旧的参与者/线程,或者确保只存在一个参与者(我尝试将参与者线程设为对象,但这没有任何

我有一个play应用程序,其中我使用的演员可以做一些持续的工作/监控

e、 g

在我的代码中,我只启动了这个演员一次。
我的问题是,每当play自动重建应用程序时(由于源代码更改),它都会创建一个新的参与者,但不会删除旧的参与者。 如果使用线程(包括守护进程线程)而不是参与者进行监视,则会发生完全相同的情况

除了手动重新启动应用程序(我可以在每次更改时自动重新启动应用程序)之外,是否有其他方法可以在自动重建时杀死旧的参与者/线程,或者确保只存在一个参与者(我尝试将参与者线程设为
对象,但这没有任何帮助)?

另外,是否有一种更好的后台监控模式(显然是一种不会创建非结束线程的模式)

谢谢

您可以定义侦听应用程序事件(必须在默认包中定义):

重新加载时会触发停止和启动事件。 如果您使用的是Play的内部演员系统,我认为您可以使用此系统:

play.api.libs.concurrent.Akka.system.shutdown()

这不是他的把戏,谢谢你!编辑:应在默认包中
import play.api.GlobalSettings

object Global extends GlobalSettings {

  override def onStart(application: play.api.Application) {
    println("Starting actors")
    MyActorSystem
  }

  override def onStop(application: play.api.Application) {
    println("Stopping actors")
    MyActorSystem.system.shutdown()
  }
}
play.api.libs.concurrent.Akka.system.shutdown()