我正在写一个基于 Java 的 shell-type... erm.. thing。无论如何,我正在执行的命令之一是一个schedule
命令,您可以在其中告诉它您要运行命令的时间,它会等待时间,运行一次命令,然后退出。但是,我不知道如何让它检查时间 - 我实现了一个只检查日期是否相等的方法,做了一些研究以查看是否存在更好的解决方案,然后发现这显然Date
不是一件好事使用。我应该怎么办?
MCVE:
import java.util.Date;
public class Scheduler extends Thread {
private Date goAt;
private String command;
public Scheduler(Date goAt, String command) {
this.goAt = goAt;
this.command = command;
}
public void start() {
super.start();
}
public void run() {
while (!goAt.equals(new Date())) {} //Wait until the dates are equal
runCommand(command); //In the real thing, this runs the command.
}
public void runCommand(String command) {
System.out.println("Command: " + command);
}
public static void main(String[] args) {
Scheduler task = new Scheduler(new Date(System.currentTimeMillis() + 5000));
task.start();
}
}
我希望在不使用第三方库或必须单独下载的库的情况下完成此操作。如果没有办法这样做,那么我将接受第三方库的答案,但优先选择没有它们的解决方案。如果答案允许我直接指定运行命令的时间,而不是计算相对时间差并使用它,那么理想的情况也是如此。