嘿习惯了groovy,我想在我的groovy脚本中有一个循环,比如do while循环,每小时或每2小时运行一次,直到满足循环中的某个条件(变量=某事)。所以我找到了睡眠步骤,但想知道是否可以睡了这么长时间。睡眠功能不会搞砸吗?
答案 0 :(得分:3)
睡眠功能不会搞砸。但这不是你最大的问题。
如果您的所有脚本都在休眠,那么最好让Cron之类的调度程序启动您的脚本。这种方式更简单,更有弹性,它减少了脚本累积垃圾,泄漏内存,让JVM被另一个进程杀死,或者因编程错误而陷入糟糕状态的机会。 Cron是稳固的,并且可以通过这种方式出错。启动JVM并不快,但如果您的时间范围是几小时,则不应该成为问题。
另一个可能的问题是脚本唤醒的时间可能会有所不同。操作系统调度程序没有义务在准确的时间内唤醒您的线程。在脚本运行时,也可以更改服务器上的时间。使用Cron可以让你的脚本更加可预测。
另一方面,对于调度程序,如果进程花费的时间比下次运行的时间长,则有可能同时存在多个进程实例。您可能希望让脚本创建一个锁定文件并在完成后将其删除,检查该文件是否已存在,以便让其知道另一个实例是否仍在运行。
答案 1 :(得分:0)
首先,在#groovy中没有do {} while()
构造。其次,使用调度程序更好。 QuartzScheduler运行cron任务。