如何每天从Java运行任务?

时间:2009-09-30 15:22:29

标签: java timer jdk1.4

如何使用java.util.Timer每天在指定时间(比如上午11:00)运行任务?我正在使用JDK 1.4.2,我知道它已经过时了,但它正是项目所需要的。

6 个答案:

答案 0 :(得分:30)

Quartz是在Java环境中安排流程的最着名的解决方案,但您有很多选择。检查此列表:

Quartz是一个开源作业调度系统,可以与几乎任何J2EE或J2SE应用程序集成或一起使用。 Quartz可用于创建简单或复杂的计划。

Jcrontab旨在扩展并与任何项目集成。读取并存储要在文件,数据库或EJB中执行的任务,并提供Web UI和基本的swing GUI。

Essiembre J2EE Scheduler是J2EE应用程序的简单任务调度机制。可以将此库视为标准Java API中的Timer和TimerTask类的包装。要执行的任务的配置及其频率是基于XML的。

cron4j是Java 2平台的调度程序,与UNIX cron守护程序非常相似。

Oddjob的目标是为将企业的关键业务流程联系在一起的所有批处理文件和cron作业提供一些订单和可见性。

Fulcrum Scheduler提供调度程序服务。它基于Turbine提供的TurbineScheduler,但所有旧的东西都已被移除。目前只有非持久性调度程序完成。它从组件config xml文件加载计划作业。

Gos4j - 面向目标的Java调度 - 是一种根据目标组织处理优先级的方法。

Job Scheduler是一个作为恶魔运行的批处理程序,可以使用图形用户界面进行控制。 Job Scheduler对计划的程序,脚本以及任务处理的时间和频率使用XML配置。可以使用API​​来控制事件并记录到您的作业。

JDRing是一个简单而小巧的轻量级Java调度库,但仍然支持指定时间间隔的振铃警报,一次性事件或具有完全类似cron控制的复杂计划。

jBatchEngine是一个用Java编写的批处理作业假脱机程序。与Cron等时间驱动的调度程序相比,jBatchEngine是事件驱动的。

MyBatchFramework是一个开源轻量级框架,旨在为Java语言创建易于管理且易于管理的批处理程序。

Super with SuperScheduler and SuperWatchdog是一个Java作业调度程序,具有适用于所有应用程序的丰富GUI。它是平台中立的。特别适合作为Linux和Solaris的作业调度程序。它提供了Microsoft Windows Scheduler的一组超级功能。它提供事件触发的调度。它可以在分布式环境中安排任务。任务将在网络中的所有计算机中执行一次且仅执行一次。所有任务都是假期可调的。即使每项工作都是STANDBY工作,历史也是重要任务的良好轨迹。它支持国际化。

来源:Open Source Job Schedulers in Java

答案 1 :(得分:4)

查看TimerTask和Timer - 两者都在JDK的那个版本中。

Timer :
public void schedule(TimerTask task, Date firstTime, long period)
public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

将其设置为运行您想要的第一个日期,然后将一天中的毫秒数作为延迟。

答案 2 :(得分:3)

您是否可以使用cron4j等库?它会让你的工作变得更轻松!

答案 3 :(得分:2)

  • Java计时器可以按时间间隔,预定时间等运行任意作业。等等。
  • Quartz图书馆
  • 如果你真的想对它嗤之以鼻,请将它包装在shell脚本中并放入cron中。

答案 4 :(得分:1)

您必须使用Quartz

我从来不知道谁首先推出了Quartz。

如果您有应用程序服务器或类似工件,则可以在那里配置Quartz作业并让它在给定时间运行您的任务。

答案 5 :(得分:0)

也许,最近的帖子可以帮助你:

Will this pause my Java thread for a minute?

我对该问题的回答是使用基于java.util.Time和java.util.TimerTask类的java内置实现: Will this pause my Java thread for a minute?

或者,您可以将* crontab服务用于* nix平台(也适用于Windows平台)。这是定期运行独立工作的最简单,最轻量级的风格。

[]的,

过去