我有一点问题(我使用的是Spring 3.1.1版)。我想在一天内启动执行任务的进程或线程。
所以例如: 我有一个用户列表,每个用户的总天数都是字段。
类用户{ 字符串...... 字符串...... DateTime countDays = ... 12-12-12 ... }
所以我想要做的是,当我启动应用程序(运行)时,我想每天执行一项任务: 遍历用户列表 检查countDays 如果countDays大于14,例如 发送内容给用户....
我知道如何循环并发送一些东西。我不知道如何启动一个对象让它在一天内执行一项任务。创建一个bean,构造它并使用sleep函数????
希望有人可以帮助我,谢谢你! :d答案 0 :(得分:4)
Spring非常支持Quartz调度程序......
http://static.springsource.org/spring/docs/3.0.x/reference/scheduling.html
您可以将任务设置为每天运行一次(例如午夜),使用CRON触发器bean
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="usersJob" />
<property name="cronExpression" value="0 0 * * *" />
</bean>
答案 1 :(得分:4)
你也可以使用@Scheduled Annotation类似于:
@Scheduled(cron="0 0 * * *")
public void doStuff() {
..
}
答案 2 :(得分:1)
使用Spring的TaskScheduler和Trigger接口。 TaskScheduler负责调度任务(Runnable对象)以执行,Trigger负责确定执行时间。
对于您的情况,TaskScheduler的ThreadPoolTaskScheduler实现应该绰绰有余。它将java.util.concurrent.ThreadPoolExecutor调整为TaskScheduler。
对于触发器实现,CronTrigger非常适合您的需求。它可用于创建触发器策略,以便每天同时执行任务。
示例Java代码:
Runnable task = /* your task */
TaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.schedule(task, new CronTrigger("0 0 * * *"));