2012-12-12 97 views
3

我有一个小问题(我正在使用Spring 3.1.1版本)。我想开始一个进程或线程来执行一天的任务。Spring Java - 运行进程每天执行一次任务

例如: 我有一个用户列表,每个用户的总天数为字段。

类用户{ 字符串... 字符串... 日期时间countDays = ... 12-12-12 ... }

所以我想要做的是,当我开始我应用程序(运行),我想执行一个任务,每天:通过用户列表 循环 检查countDays 如果countDays是大于14例如 送东西给用户....

我知道如何循环播放和发送内容。我不知道如何开始一个对象,让它在一天内完成一项任务。创建一个bean,构造它并使用睡眠函数

希望有人能帮助我,谢谢! :d

回答

4

Spring支持的Quartz调度非常好...

http://static.springsource.org/spring/docs/3.0.x/reference/scheduling.html

您可以设置一个任务,每天运行一次(在午夜,例如)与一个cron触发豆

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail" ref="usersJob" /> 
    <property name="cronExpression" value="0 0 * * *" /> 
</bean> 
+0

哇...这是快。我想我找到了我正在寻找的东西:TimerTask。男人..我感谢你! –

+0

Spring对cron触发器也有本地支持,所以如果你不需要它,你不需要Quartz。由Zutty提供的链接具有所有细节。 –

1

利用Spring的TaskSchedulerTrigger接口。 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 * * *")); 
相关问题