2011-12-21 124 views
3

我想在Spring MVC中安排一個方法調用,以在每兩個小時後運行。這可以通過Spring 3.0 Time Scheduler輕鬆完成。但是,我只想在一天的特定時間將執行關閉。也就是說,該方法應該從特定時間開始每2小時調用一次。Spring MVC 3在特定時間開始的時間計劃任務

例如 - 我想讓方法從上午6點開始每2小時運行一次。 TimeScheduler接口有一個scheduleAtFixedRate方法,它被重載以使用startTime Date參數。我不確定如何使用它。

任何想法如何實現?

回答

2

你可以看看在TaskScheduler接口。它提供了一種方法scheduleAtFixedRate(Runnable task, Date startTime, long period),它返回ScheduledFuture。你可以用一些簡單的Spring配置使用:

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

這將創建一個ThreadPoolTaskScheduler實例,實現TaskScheduler。將這個壞男孩連線到課堂,以便調用你的具體方法:

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 
    } 
} 
+0

兩個方法都是對的,取決於你想要遵循什麼方法。我最終選擇了cron。非常感謝。 – Tushar 2011-12-22 03:58:47

0

我會看看Spring的支持Task Execution and Scheduling。具體檢查出@Scheduled註釋(與您可以指定根據cron表達式的時間表):

@Scheduled(cron="*/5 * * * * MON-FRI") 
public void doSomething() { 
    // something that should execute on weekdays only 
} 
+0

我確實嘗試過,我無法實現的是在一天的特定時間觸發重複執行。 – Tushar 2011-12-21 04:14:04

+0

重複多久?這是你想要每天發生的事情,還是有一天開始並永遠運行? – 2011-12-21 04:16:22

+0

我想在一天中的特定時間開始(這是一次),然後執行每2小時永久執行一次。 – Tushar 2011-12-21 04:21:13

相關問題