2016-03-03 124 views
1

我有一個需求來安排在觸發器觸發時將運行的任務。我正在使用ManagedScheduledExecutorService來安排任務。使用ManagedScheduledExecutorService重新安排任務

ScheduledFuture<?> schedule(Runnable command,Trigger trigger) 

用戶將調度多個任務,如:

  1. user1的安排使我們每天必火晚上9點的任務。
  2. user2預定了一項任務,每天晚上10點纔會開始工作。
  3. 用戶3計劃,這將激發隔日任務在下午4點

user2的要重新安排到上午10點運行,每天的任務。現在我想取消上一個任務並創建一個新任務。在存儲器中存儲ScheduledFuture引用不起作用,因爲我們正在使用集羣環境。我不能將ScheduledFuture的引用存儲在數據庫中,因爲scheduledFuture未被序列化。

如何存儲scheduledFuture引用或有任何方法來重新安排任務?

ScheduledFuture future = managedScheduledExecutorService.schedule(task, triggerimpl); 
+0

你嘗試過什麼? –

回答

0

假設您有一個方法 SCHEDULE

class Scheduler { 
private ScheduledFuture future; 
    public void schedule(){ 
    future = managedScheduledExecutorService.schedule(task, triggerimpl); 
    } 
    } 

triggerimpl在10PM

定義計劃任務,你可以寫重排的方法

** **重新安排

class Scheduler { 
private ScheduledFuture future; 
    public void schedule(){ 
    future = managedScheduledExecutorService.schedule(task, triggerimpl); 
    } 

    public void reschedule(){ 
    future.cancel(false); 
    future = managedScheduledExecutorService.schedule(task, newtriggerimpl); 
    } 
    } 

newtriggerimpl定義日程上午10點