2014-12-01 87 views
1

嘿习惯了groovy,我想有一个循环,例如在我的groovy脚本中运行while循环,每小时运行一次或2,直到满足循环内的某个条件(可变=某事)。所以我找到了睡眠步骤,但想知道如果睡这么长时间会好吗。睡眠功能不会搞乱吧?睡眠循环在groovy小时

回答

3

睡眠功能不会搞乱。但那不是你最大的问题。

如果您的所有脚本正在进行睡眠,最好有一个调度程序,如Cron启动您的脚本。这种方式更简单,更具弹性,它减少了脚本堆积垃圾,泄漏内存,让JVM被另一个进程杀死或者由于编程错误而陷入不良状态的机会。克朗是坚实的,并且有更少的可能出现这样的错误。启动JVM并不是很快,但如果您的时间框架在几个小时内,这应该不成问题。

另一个可能的问题是,脚本唤醒的时间可能会漂移。操作系统调度程序没有必要在完全耗尽的时间内将线程唤醒。此外,服务器上的时间可以在脚本运行时更改。使用Cron会让你的脚本更具可预测性。另一方面,使用调度程序,如果进程花费的时间比下次运行时间要长,则进程的多个实例可能会同时存在。您可能希望脚本创建一个锁定文件并在完成后将其移除,检查文件是否已经存在,以便让其知道另一个实例是否仍在运行。

0

首先,groovy中没有do {} while()构造。其次,使用调度器是一个更好的主意,例如QuartzScheduler运行一个cron任务。