Spring MVC 3定时任务在特定时间开始

3
我希望在Spring MVC中安排一个方法调用,每两个小时运行一次。这可以通过Spring 3.0时间调度器轻松完成。但是,我只想在一天的特定时间启动执行。也就是说,该方法应该仅在特定时间开始后每2小时调用一次。
例如 - 我希望该方法从早上6点开始每2小时运行一次。 TimeScheduler接口有一个scheduleAtFixedRate方法,它重载使用startTime Date参数。我不确定如何使用它。
有任何想法如何实现这一点吗?
2个回答

3

您可以查看 TaskScheduler 接口。它提供了一个方法 scheduleAtFixedRate(Runnable task, Date startTime, long period),该方法返回一个 ScheduledFuture。您可以通过一些简单的Spring配置使用它:

<task:scheduler id="scheduler" pool-size="10"/>

这将创建一个实现TaskSchedulerThreadPoolTaskScheduler实例。将其连接到类中以调用您的特定方法:

public class MyClass {
    @Autowired
    private TaskScheduler scheduler;

    public void init() {
        scheduler.scheduleAtFixedRate(new Runnable() {
            public void run() {
                myMethod();
            }
        }, new Date(), 1000 * 60 * 60 * 2); //This will start now and run every two hours
    }

    public void myMethod() {
        // the method you want to invoke
    }
}

两种方法都是正确的,取决于你想要采用哪种方法。我最终选择了cron。非常感谢。 - Tushar

0
我建议您查看Spring对任务执行和调度的支持。具体来说,请查看@Scheduled注释(您可以使用它来指定基于cron表达式的计划):
@Scheduled(cron="*/5 * * * * MON-FRI")
public void doSomething() {
    // something that should execute on weekdays only
}

我确实尝试过,但我无法实现的是在特定时间触发重复执行。 - Tushar
重复多久?这是每天都要发生的事情,还是只要开始一天就永远运行? - nicholas.hauschild
我希望它从一天中的特定时间开始(只需执行一次),然后每隔2个小时无限期地执行。 - Tushar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接