2012-12-12 133 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 * * *")); 
相關問題