Как сделать планировщик заданий? - PullRequest
0 голосов
/ 16 мая 2019

Я хочу запланировать поток, который выполняет задачу в 3 часа утра каждый день.Я сделал планировщик, используя TimerTask, заданный Java, quatrz API и так далее.Но TimeTask и все не смогли удовлетворить мое требование.Потому что мое требование заключается в том, что мой планировщик не должен запускать какой-либо процесс для проверки времени сервера.Означает, что приложение планировщика не должно находиться в режиме выполнения, просто для проверки времени сервера для запуска выполнить задачу.

Я выполнял бесконечный цикл для проверки времени сервера.Когда часы равны 3 часам, используется условие my if, и потоку разрешено выполнять задачу.

Но проблема этого подхода в том, что этот бесконечный цикл находится в режиме выполнения, который требует от приложенияработать до 3 часов следующего утра.Есть ли другой способ запуска этого приложения каждый день на 3 часа без этого избыточного режима работы.

1 Ответ

0 голосов
/ 22 мая 2019

Вам стоит взглянуть на Заводной механизм isocline , который является движком Java-процесса. Он способен кодировать различные функции более эффективно, чем Quartz, и имеет специфическую функцию выполнения.

package isocline.clockwork.examples.basic;

import isocline.clockwork.*;
import isocline.clockwork.descriptor.CronDescriptor;
import org.junit.Test;

public class ClockRepeat implements Work {

    public long execute(WorkEvent event) throws InterruptedException {
        //TODO

        return WAIT;
    }

    @Test
    public void case1() throws Exception {

        WorkProcessor processor = WorkProcessorFactory.getDefaultProcessor();
        processor.createSchedule(new CronDescriptor("* 3 * * *"), this).activate();

        processor.awaitShutdown();
    }
}
...