我在 Windows 机器中有一个 .bat 文件,它通过调用 Java 可执行文件(.Jar)的主类来启动我们的程序
现在我需要每 30 分钟运行一次。
我经历了几种方法,但无法决定哪种方法更好。
通过 Windows 调度程序或使用 Java 计时器进行调度。选择哪一个?我只想运行一个进程实例。如果前面的过程没有在 30 分钟内完成,我可以等待。
请根据我的用例告诉我要做什么。
提前致谢。
我在 Windows 机器中有一个 .bat 文件,它通过调用 Java 可执行文件(.Jar)的主类来启动我们的程序
现在我需要每 30 分钟运行一次。
我经历了几种方法,但无法决定哪种方法更好。
通过 Windows 调度程序或使用 Java 计时器进行调度。选择哪一个?我只想运行一个进程实例。如果前面的过程没有在 30 分钟内完成,我可以等待。
请根据我的用例告诉我要做什么。
提前致谢。
TimerTask不是一个调度系统,它是一个为应用内调度提供工具的库。似乎对于您的用例,您需要一个系统:无论您的应用程序是否正在运行,您需要报告等,您都需要它来运行。Windows 调度程序(或unix/linux 上的cron)更适合您的需求。
您最好使用 Windows 调度程序。如果确实存在进程耗时过长的风险,您可以创建一个文件,或在进程运行时打开一个套接字,当另一个进程尝试启动时,它可以检测到并简单地退出。这将使它“错过” 30m 窗口(即,如果第一个作业在 12 点开始并在 12:35 完成,则下一个作业要到 1 点才会开始)。
但是这样一来,您就不必担心设置长时间运行的进程、启动和停止 java 服务等。Windows 调度程序只是让这样的事情变得更容易。