是否有特定于Scala的方法来实现定期执行?

时间:2010-07-07 03:16:21

标签: scala concurrency actor

AKA按照设定的时间间隔做某事。

例如,假设我想每隔60秒扫描一个目录。

在Java中,我会像ScheduledExecutorService这样使用:

Executor pool = Executors.newScheduledThreadPool(10)
pool.scheduleAtFixedRate(scanner, 0, 60, TimeUnit.SECONDS)

并且工作正常。

问题是,我想我想尝试在我的程序中使用Scala actor,但是我对如何组合actor和Java Executors,或者它们是否应该这样做有点困惑。

我想也许我可以有一个简单的跑步者,它只会在每个 N 秒发送消息给一个演员 - 这有意义吗?

2 个答案:

答案 0 :(得分:2)

我想也许我可以有一个简单的跑步者,它只会每隔N秒向一个演员发送一条消息 - 这有意义吗?

  

是的,并考虑顺便使用Akka作为演员。它有一个更简单的API,更好的性能,并且有很多美味的东西。

答案 1 :(得分:0)

您可以尝试Scala Executor本身,而不是Java。

  

执行提交的java.lang.Runnable任务的对象   此接口提供了一种将任务提交与每个任务运行方式的机制分离的方法,包括线程使用,调度等的详细信息。   通常使用Executor而不是显式创建线程。例如,您可以使用:

,而不是为每组任务调用new Thread(new(RunnableTask())).start()
 Executor executor = anExecutor;
 executor.execute(new RunnableTask1());
 executor.execute(new RunnableTask2());
 ...