相关疑难解决方法(0)

Scala中的后台任务

我有一个缓存,我想定期检查和修剪.在Java中,我会做以下事情:

new Thread(new Runnable() {
  void run() {
    while (true) { 
      Thread.sleep(1000);
      // clear the cache's old entries
    }
  }
}).start();
Run Code Online (Sandbox Code Playgroud)

当然,我有一些线程安全类型的问题可以用作缓存,但是把它放在一边,我的问题很简单.什么是Scala运行重复后台任务的方式 - 您不希望在应用程序的主线程中运行?

我曾经使用过一些演员,我猜我在这个场景中的问题是我没有任何东西可以生成一条消息,是时候清除缓存了.或者更确切地说,我可以想象生成这些消息的唯一方法是创建一个线程来执行它...

编辑:我需要人们对答案进行投票 - 他们对我来说都很好看

multithreading scala

31
推荐指数
5
解决办法
1万
查看次数

Play 2.4:使用依赖注入在app启动时安排定期任务

我需要在应用程序启动时安排一个重复的任务,任务本身非常简单,只需向应用程序发送一个即发即弃的HTTP调用.我不是一个游戏高手,买我会假设是s简单的解决方案会是这样的使用play.api.libs.concurrent.Akka.system.scheduleGlobal.onStart.从Play 2.4开始,Global配置有点弃用,有利于新的Guice DI.黑客从DI文档中获取建议我无法为这个问题找到一个很好的解决方案.我设法得到的最好的是在GuiceApplicationLoader调用自定义实现之上编写一个包装器BuiltInComponentsFromContext,但在这种情况下我不能使用注入来获取WSClient.使用Play 2.4重写类似内容的最佳方法是什么:

object Global extends GlobalSettings {
  override def onStart(app: Application) = {
    Akka.system.schedule(2.hours, 2.hours, theTask)
  }
}
Run Code Online (Sandbox Code Playgroud)

scala akka playframework playframework-2.0

3
推荐指数
1
解决办法
1488
查看次数