2

我有关注 EJB,它正在以固定延迟安排“MyJob”。

@Startup
@Singleton
public class Scheduler {

    static final long INITIAL_DELAY = 0;
    static final long PERIOD = 5;

    @Resource
    ManagedScheduledExecutorService scheduler;

    @PostConstruct
    public void init() {
        this.scheduler.scheduleWithFixedDelay(new MyJob(), INITIAL_DELAY, PERIOD, TimeUnit.SECONDS);
    }

}

我想用类似 cron 的表达式来安排这个工作,我如何在不使用 Quartz 或任何其他框架的情况下实现这个?

编辑:更具体地说 - 我希望像 cron 这样的表达式是属性驱动的。我想动态创建调度程序,这样我就不必为多个批处理作业创建多个 bean。

4

1 回答 1

3

您可以使用@Schedule API:

@Schedules({
            @Schedule(month = "5", dayOfMonth = "20-Last", minute = "0", hour = "8"),
            @Schedule(month = "6", dayOfMonth = "1-10", minute = "0", hour = "8")
    })
    private void plantTheCorn() {
        // Dig out the planter!!!
    }

请参阅此问题和答案:使用“crontab 语法”进行 EJB 计划任务

于 2019-04-16T07:48:03.050 回答