我已经被分配到一个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时间所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)