私はJavaベースのシェルタイプを書いています...ええと..もの。とにかく、私が実装しているコマンドの 1 つはコマンドです。コマンドschedule
を実行する時刻を指定すると、その時刻を待ち、コマンドを 1 回実行して終了します。ただし、時間を確認する方法がわかりません-日付が等しいかどうかを確認するだけのものを実装し、より良い解決策が存在するかどうかを少し調査したところ、明らか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();
}
}
サードパーティのライブラリ、または個別にダウンロードする必要があるライブラリを使用せずにこれを実行したいと考えています。そうする方法がない場合は、サードパーティのライブラリを使用して回答を受け入れますが、サードパーティのライブラリを使用しないソリューションが優先されます。また、相対時間差を計算してそれを使用するのではなく、答えがコマンドを実行する時間を直接指定できるようにすることも理想的です。