exi*_*t_1 5 java linux command-line sleep
我被指派在linux机器上设计一个java程序:
现在,我需要每隔几分钟运行一次; 所以我的合作伙伴所做的是创建一个脚本,使用循环来运行程序,睡几分钟,然后重复.
最近,我的老板告诉我们它的好,但希望整个程序完全自包含在java中; 意味着它在java中循环和休眠.最重要的是,他希望每次运行程序时都可以通过命令行确定睡眠持续时间.
我做了一些研究,似乎在某些情况下使用Thread.sleep()是低效的,我无法判断这是否是其中之一.另外,我还不清楚如何在运行程序时通过命令行确定睡眠时间.如有必要,我可以提供代码.
Tom*_*icz 21
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Thread.sleep()在毫秒时间范围内可能效率低或不够精确,但在您的情况下则不然.但是,如果您希望进程以相同的频率运行(而不是使用固定延迟),请考虑:
final long start = System.currentTimeMillis();
//do your job...
final long runningTime = System.currentTimeMillis() - start;
Thread.sleep(sleepSeconds * 1000 - runningTime);
Run Code Online (Sandbox Code Playgroud)
这很重要," 做你的工作 "部分可能需要花费大量时间,而且你希望这个过程具有准确的频率.
另外为了便于阅读,请考虑TimeUnit类(Thread.sleep()在下面使用):
TimeUnit.SECONDS.sleep(sleepSeconds);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37618 次 |
| 最近记录: |