嘿,习惯了groovy,我想在我的groovy脚本中有一个循环,比如do while循环,它每隔一个小时或2个小时运行一次,直到满足循环中的某个条件(变量=某事)。所以我找到了睡眠的步骤,但想知道睡这么长时间是否可以。睡眠功能不会混乱,对吧?
发布于 2014-12-01 16:00:17
睡眠功能不会混乱。但这不是你最大的问题。
如果您的脚本所做的只是休眠,最好让一个像克隆这样的调度程序启动您的脚本。这种方式更简单,更有弹性,它减少了脚本积累垃圾、泄漏内存、让JVM被另一个进程杀死,或者因为编程错误而陷入糟糕状态的机会。克朗是坚实的,很少有可能出错的方式。启动JVM不是快速的,但如果您的时间框架是小时内,这应该不是一个问题。
另一个可能的问题是,您的脚本唤醒的时间可能会漂移。操作系统调度程序没有义务在经过的时间唤醒线程。此外,在脚本运行时,服务器上的时间可能会更改。使用Cron将使您的脚本的执行时间更可预测。
另一方面,对于调度程序,如果一个进程花费的时间超过下一次运行的时间,则该进程的多个实例可能同时存在。您可能想让脚本创建一个锁文件,并在它完成后删除它,检查该文件是否已经存在,以便让它知道另一个实例是否仍在运行。
发布于 2014-12-01 15:48:50
首先,groovy中没有do {} while()
构造。其次,使用调度程序(如QuartzScheduler )运行cron任务是一个更好的主意。
https://stackoverflow.com/questions/27231705
复制相似问题