让Java在循环之间hibernate,在Linux上用命令行指定的hibernate时间

让Java在循环之间hibernate,在Linux上用命令行指定的hibernate时间,第1张

概述让Java在循环之间hibernate,在Linux上用命令行指定的hibernate时间

我已经被分配到一个linux机器上的Java程序,其中:

连接到数据库

读一个logging

检索某些信息并根据被称为“威胁级别”的字段发送给Nagios

读下一个logging并重复步骤3,直到所有logging被读取

现在,我需要每隔几分钟才能运行一次。 所以我的合作伙伴所做的是创build一个脚本,使用循环来运行程序,睡几分钟,然后重复。

最近,我的老板告诉我们,它的好,但希望整个程序是完全独立于Java; 这意味着它在java中循环和睡眠。 最重要的是,每次运行程序时,他都希望通过命令行来确定睡眠持续时间。

我做了一些研究,似乎使用Thread.sleep()在某些情况下是低效的,我不能说这是否是其中之一。 此外,我还不清楚如何通过运行程序的命令行来确定睡眠时间。 如有必要,我可以提供代码。

POVRAY for windows:使用命令行渲染几个pov文件

将powershell输出导出到文本文件

在windows命令解释器的历史缓冲区的韵或理由?

windows命令行使用目录和exe参数

git:gitk有“按datesorting”的命令行选项吗?

在Windowed Kiosk模式下运行Chrome

有任何命令行TMX编辑工具(多语言支持)的linux?

在Bash命令行中通过文件运行R函数

在linux上使用Team Explorer Everywhere设置工作区

通过shell_exec设置java代码执行的时间限制

Thread.sleep()很好,特别是当你想睡几分钟时 :

public class Main { public static voID main(String[] args) throws InterruptedException { final int sleepSeconds = Integer.parseInt(args[0]); while(true) { //do your job... Thread.sleep(sleepSeconds * 1000); } } }

Thread.sleep()在毫秒时间范围内可能效率低下或不够精确,但在您的情况下不是这样。 但是如果你想让进程以相同的频率运行(而不是固定延迟),请考虑:

final long start = System.currentTimeMillis(); //do your job... final long runningTime = System.currentTimeMillis() - start; Thread.sleep(sleepSeconds * 1000 - runningTime);

这是“ 做你的工作 ”的一部分可能需要大量的时间,你需要的过程与确切频率的重要。

为了便于阅读,考虑TimeUnit类(在下面使用Thread.sleep() ):

TimeUnit.SECONDS.sleep(sleepSeconds);

在程序启动时在命令行上设置一个系统属性:-Dmy.sleep.time = 60000然后获取该参数:long mySleepTime = System.getProperty(“my.sleep.time”);

看看Executor框架。 scheduledexecutorservice有一个scheduleWithFixedDelay,它可能会做你想做的事情(在执行期间延迟执行你的代码)。

看一看java.util.Concurrent API,特别是你可能对scheduledexecutorservice

当使用命令行参数在Java中运行某些内容时,它们存储在main函数的参数args中,如下所示:

public static voID main(String[] args)

如果只有一个参数,并且它是一个数字,则可以使用以下命令将其变成一个整数:

Integer.parseInt(args[0])

这将返回存储为数组args的零元素的String所表示的整数值。

编辑:请注意,您调用Java虚拟机时发送命令行参数:

java MyCompiledfile arg0 arg1 arg2

其中,MyCompiledfile是要运行的文件的名称,arg0,arg1和arg2(您可以拥有任意数量的参数)是进入args [0],args [1]和args的字符串[2]中传递给main的参数。 如果在多个目录中有多个文件,则需要指定一个classpath – 一个包含所有包含文件的目录的目录。 (请注意,这些是二进制文件,是编译源文件的结果,而不是源文件本身)。 在这种情况下,请使用:

java -cp MyClasspath MyCompiledfile arg0 arg1 arg2

其中MyClasspath是linux类路径(如/ home / usr / bin)。

总结

以上是内存溢出为你收集整理的让Java在循环之间hibernate,在Linux上用命令行指定的hibernate时间全部内容,希望文章能够帮你解决让Java在循环之间hibernate,在Linux上用命令行指定的hibernate时间所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1154677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存