【问题标题】:Windows Scheduler Vs. Java TaskTimerWindows 调度程序与。 Java 任务定时器
【发布时间】:2012-11-01 14:08:39
【问题描述】:

我在 Windows 机器上有一个 .bat 文件,它通过调用 Java 可执行文件 (.Jar) 的主类来启动我们的程序

现在我需要每 30 分钟运行一次。

我尝试了几种方法,但无法决定哪种方法更好。

通过 Windows 调度程序或使用 Java 计时器进行调度。选择哪一个? 我只想运行一个进程实例。如果上一个过程在 30 分钟内没有完成,我可以等待。

请根据我的用例告诉我要做什么。

提前致谢。

【问题讨论】:

  • 你指的是Java的TimerTask吗?
  • 是的,我指的是 Java 的 TimerTask...

标签: java scheduled-tasks scheduling


【解决方案1】:

您最好使用 Windows 调度程序。如果确实存在进程耗时过长的风险,您可以创建一个文件,或在进程运行时打开一个套接字,当另一个进程尝试启动时,它可以检测到并简单地退出。这将使它“错过” 30m 窗口(即,如果第一个作业在 12 点开始并在 12:35 完成,则下一个作业要到 1 点才会开始)。

但这样一来,您就不必担心设置长时间运行的进程、启动和停止 java 服务等。Windows 调度程序只是让这样的事情变得更容易。

【讨论】:

  • 我之前尝试过这样做,但我无法执行以下操作,1) 安排进程每 30 分钟发生一次 2) 处理系统重启。如果用户不做任何事情,调度程序应该每 30 分钟启动一次
【解决方案2】:

TimerTask 不是一个调度系统,它是一个为应用内调度提供工具的库。似乎对于您的用例,您需要一个系统:无论您的应用程序是否正在运行,您需要报告等,您都需要它来运行。Windows 调度程序(或 unix/linux 上的 cron)是更适合您的需求。

【讨论】:

  • 但我找不到任何选项来在 Windows 调度程序中将进程设置为每 30 分钟调度一次。我在哪里可以这样做?我还需要了解何时使用 Windows 调度程序以及何时使用应用内调度?
  • 将 TimerTask 与调度系统进行比较就像将苹果与水果店进行比较;-) TimerTask(以及它的弟弟,ScheduledExecutorService)是程序员在需要调度时在他们的程序中使用的工具。如果你需要建立一个系统来安排一个特定的任务,你将需要一个系统来做这件事——除了调度之外,还提供任务管理、数据持久性、高可用性、报告等。当然,你可以写这样一个系统从零开始,并在其中使用了TimerTask。但这对您的需求来说有点过头了。
  • 如何在 Windows 中安排任务对于本网站来说完全是题外话。您可以在 Internet (here's one) 上找到这方面的教程。
  • 我完成了非常清楚的步骤。但是在这里,如果以前的过程超过 30 分钟,我不应该从新的开始。我该如何处理?除了 30 分钟间隔,还有其他标准可以提及吗?
  • 我想我可以创建一个临时文件和 .bat 文件,我可以在开始下一个过程之前检查它。还有其他更好的方法吗?
猜你喜欢
  • 2012-04-21
  • 1970-01-01
  • 2019-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 2021-07-20
相关资源
最近更新 更多