如何用Java制作Job Scheduler?

时间:2019-05-16 11:12:03

标签: java multithreading scheduled-tasks threadpool

我想安排一个线程,每天早上3点执行任务。我已经使用java,quatrz api等给出的TimerTask进行了调度。但是TimeTask和所有人都无法满足我的要求。因为我的要求是我的调度程序不应运行任何进程来检查服务器时间。意味着Scheduler应用程序不得处于运行模式,仅用于检查服务器运行时间即可执行任务。

让我告诉你我做了什么。我正在运行无限循环来检查服务器时间。当凌晨3点时,我的if条件被满足,并且允许线程执行任务。 但是这种方法的问题是这个无限循环处于运行模式,该模式要求应用程序运行到第二天凌晨3点。是否有另一种方法可以每天3点启动此应用程序而无需这种冗余运行模式。

1 个答案:

答案 0 :(得分:0)

您应该看看isocline的Clockwork,它是一个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();
    }
}