我应该如何在Scala中安排一些简单的延迟任务?

时间:2011-04-26 23:32:41

标签: scala scheduling

我正在制作一个Chaos Monkey计划,我想让它在一段时间后自行清理。我想要一种简单的方法来将清理任务排队,以便将来称为一定时间。我想我可以和演员一起做点什么,还有很多挥手,但这似乎是错误的做法。在Scala标准库中是否有更好的工具来完成此任务?

2 个答案:

答案 0 :(得分:9)

我在Scala中编写了一个名为foil的调度DSL,它可以在Github上免费获得。它可以与Java Calendar / Date或Joda库一起使用。语法如下所示:

schedule(f) now
schedule(f) onceAfter 5.minutes
schedule(f) onceAt inst
schedule(f) onceAtNext time
schedule(f) todayNoEarlierThan time

其中f是闭包(即() => Unit)。还有更多示例on the Wiki和带有陪衬的example REPL session,展示了如何使用它(包括Java日期/日历和JODA)。

答案 1 :(得分:4)

没有所以涉及很多手势,reactWithin结合TIMEOUT消息可以让你这样做。

您还可以使用Futures.alarm创建一个可在指定时间限制后解决的等待Future