Scala中的后台任务 [英] Background task in Scala

查看:122
本文介绍了Scala中的后台任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个要定期检查和修剪的缓存.在Java中,我将执行以下操作:

I have a cache I want to periodically check and prune. In Java, I'd do the following:

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

当然,我将线程安全类型用作高速缓存时会遇到一些问题,但撇开这个问题,我的问题很简单. Scala运行重复后台任务的方式是什么-您不想在应用程序的主线程中运行某些东西?

Sure, I'd have some issues with thread-safe types to use as the cache, but putting that aside, my question is simple. What's the Scala way of running a recurring background task -- something you don't want running in the application's main thread?

我已经使用了一些actor,我想在这种情况下我的问题是我没有任何东西可以生成一条消息,表明该是时候清除缓存了.或者更确切地说,我能想到的生成这些消息的唯一方法是创建一个线程来执行此操作...

I've used actors a bit and I guess my problem in this scenario is that I don't have anything to generate a message that it's time to clear the cache. Or rather, the only way I can imagine to generate those messages is to create a thread to do it...

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

推荐答案

有很多方法可以做到这一点,但我会做一些简单的事情,如下所示.

There are many ways to do that, but I would do something simple like the following.

import scala.concurrent.ops._

spawn {
  while (true) { 
    Thread.sleep(1000);
    // clear the cache's old entries
  }
}

希望这会有所帮助.

这篇关于Scala中的后台任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆