【问题标题】:Sleep loop in groovy for hourgroovy中的睡眠循环一小时
【发布时间】:2014-12-01 15:31:39
【问题描述】:

嘿,习惯了 groovy,我想在我的 groovy 脚本中设置一个循环,例如 do while 循环,该循环每小时或 2 次运行一次,直到满足循环内的某个条件(变量 = 某些东西)。所以我找到了睡眠步骤,但想知道是否可以睡这么长时间。睡眠功能不会乱了吧?

【问题讨论】:

    标签: groovy sleep


    【解决方案1】:

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

    如果您的所有脚本都在休眠,最好使用像 Cron 这样的调度程序来启动您的脚本。这种方式更简单,更有弹性,它减少了脚本积累垃圾、泄漏内存、让其 JVM 被另一个进程杀死或因编程错误而陷入不良状态的机会。 Cron 是可靠的,这样会出错的可能性较小。启动 JVM 并不快,但如果您的时间范围是几个小时,那应该不是问题。

    另一个可能的问题是脚本唤醒的时间可能会漂移。操作系统调度程序没有义务在经过的时间准确地唤醒您的线程。脚本运行时,服务器上的时间也可以更改。使用 Cron 将使您的脚本执行的时间更可预测。

    另一方面,对于调度程序,如果一个进程的运行时间超过了下一次运行的时间,则该进程的多个实例可能会同时存在。您可能希望脚本创建一个锁定文件并在完成后将其删除,检查该文件是否已经存在,以便让它知道另一个实例是否仍在运行。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多