【问题标题】:How to schedule an action in java?如何在java中安排一个动作?
【发布时间】:2010-01-31 19:24:21
【问题描述】:

我正在开发一个应用程序,该应用程序需要在每天结束时将数据库的内容写入 ms-excel 文件。我已经编写了将内容复制到 ms-excel 文件中的代码,但是现在如何进一步进行?是否使用线程来检查 24 小时是否完成或有其他机制?请给我一些指导。

【问题讨论】:

    标签: java scheduling


    【解决方案1】:

    如果您需要在一天中的设定时间安排运行,您应该考虑Quartz Scheduler。这可能有点矫枉过正,但它非常有能力。

    例如,您可以使用它的CronTrigger 来配置作业以按由 cron 表达式定义的计划运行,例如0 23 55 * * ?(或类似的东西)会在每晚 5 点到午夜运行你的工作(见 examples)。

    Quartz 最近被 Terracotta 人收购,其未来和财富得到了提振。希望它现在能得到一些真正的积极发展。

    【讨论】:

      【解决方案2】:

      我同意其他人的观点,即使用 crontab 之类的东西会更好。但是,如果你不能这样做,我会使用 Java 1.5 中添加的 java.util.concurrent 包。您需要的课程是ScheduledThreadPoolExecutor。具体来说就是 scheduleAtFixedRate() 方法。

      【讨论】:

      【解决方案3】:

      我认为从设计的角度来看,在 linux 平台上使用 crontab 或者在 windows 平台上使用 task scheduler 会更好。它将使您的 java 程序小而简单。虽然线程等待特定时间的解决方案看起来很简单,但它会增加一个严重的问题——你必须监控它的运行状况。 此外 - 我建议您在每次运行时仔细计划您的工作正在编写的日志。拥有成功和不成功运行的日志非常重要。 为此类日志制作单独的文件是有意义的。 还要考虑另一种情况 - 如果数据库在作业运行时不可用怎么办?可以再等 24 小时吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-24
        • 1970-01-01
        • 1970-01-01
        • 2021-08-24
        • 1970-01-01
        相关资源
        最近更新 更多