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

我应该如何在Scala中安排一些简单的延迟任务?,scala,scheduling,Scala,Scheduling,我正在制作一个程序,我希望它在一段时间后自行清理。我想用一种简单的方法将清理任务排队,称为未来的固定时间。我想我可以和演员们一起做一些事情,并挥手致意,但这似乎是错误的做法。Scala标准库中是否有更好的工具来完成此任务?没有太多的挥手动作,将reactWithin与TIMEOUT消息结合使用可以完成此任务 您还可以使用Futures.alarm创建一个可等待的Future,它将在指定的时间限制后解析。我在Scala中编写了一个名为的调度DSL,可在Github上免费获得。它将与Java日历/日

我正在制作一个程序,我希望它在一段时间后自行清理。我想用一种简单的方法将清理任务排队,称为未来的固定时间。我想我可以和演员们一起做一些事情,并挥手致意,但这似乎是错误的做法。Scala标准库中是否有更好的工具来完成此任务?

没有太多的挥手动作,将
reactWithin
TIMEOUT
消息结合使用可以完成此任务


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

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

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

其中f是一个闭包(即
()=>单元
)。还有更多的例子和一个with foil,展示了如何使用它(Java Date/Calendar和JODA)。

这两个听起来都很有趣,我以前对它们一无所知。你可以给他们一些介绍的链接吗?谢谢。Scaladoc在这些方面相当不错,但是,刚刚阅读了维基,我认为你会更好地使用Chris的箔片库。看起来很棒,正是我需要的。既然我在这里引起了你们的注意:如果我关闭我的程序,有什么方法可以停止一个预定的任务吗?也许在关机前立即运行它?此外,这有一些方法可以给我的调度添加抖动(
schedule(f)now,然后每2到100分钟左右)?您可以添加一个关机挂钩,它是JDK的一部分(
Runtime.addShutdownHook
),或者使用守护进程线程创建您的底层调度程序。对于最后一个问题,答案是“否”,因为封面下使用了
ScheduledExecutorService.scheduleAtFixedRate
。无论如何,这可以通过一个单独的皮条客添加!让我知道,如果你是认真的使用这个,我会寻找添加代码到foilI我想使用它,但坦率地说,所有的本地依赖性和类似的是一个痛苦…然后“偷”源代码:-)土星和JODA上的DEP只有当你想在运行时使用这些。他们无需使用与以下内容相关的图书馆: