Я пишу Java-shell shell-type ... erm .. вещь. Во всяком случае, одна из команд, которые я реализую, - это команда 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();
}
}
Я хотел бы, чтобы это было сделано без использования сторонних библиотек или библиотек, которые должны быть загружены отдельно. Если нет способа сделать это, я буду принимать ответы с сторонней библиотекой, но предпочтение отдается решениям без них. Также идеально было бы, если бы ответы позволили мне прямо указать время для запуска команды, а не вычислять относительную разницу во времени и использовать ее.
Таймеры могут выполнить свою работу, но у них есть проблемы, над которыми нужно следить. Вместо этого рекомендуется использовать http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html. См. Http://stackoverflow.com/questions/409932/java-timer-vs-executorservice для объяснения. – Tansir1
Мертвая ссылка для основной части ответа. В ответе укажите пример кода. –