Я пишу оболочку типа оболочки на основе Java... эээ... штуку. В любом случае, одна из команд, которые я реализую, — это команда расписания, где вы можете указать ей время, когда вы хотите запустить команду, и она ждет этого времени, запускает команду один раз и завершает работу. Однако я не могу понять, как заставить его проверять время - я реализовал метод, который просто проверяет, равны ли даты, провел небольшое исследование, чтобы увидеть, существует ли лучшее решение, а затем обнаружил, что, очевидно, 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();
}
}
Мне бы хотелось, чтобы это было сделано без использования сторонних библиотек или библиотек, которые нужно скачивать отдельно. Если нет возможности сделать это, то я приму ответы со сторонней библиотекой, но предпочтение отдается решениям без них. Также идеально было бы, если бы ответы позволяли мне напрямую указывать время для запуска команды, а не вычислять относительную разницу во времени и использовать ее.
Подробнее здесь:
https://stackoverflow.com/questions/164 ... given-time