2013-03-11 94 views
-3

我從數據源(文件或dbms)中選取計劃。該時間表告訴我何時打開設備以及何時關閉設備。例如上午11點,下午12點30分,下午2點,下午3點等。這個計劃每天重複一次。每個設備都有自己的時間表。在Java中調度需要幫助?

我想根據每天的日程安排所有這些設備。我怎樣才能在Java中做到這一點?

public class Device{ 
    boolean state;//true is on. 
    String schedule = "11am ON, 12:30pm OFF, 2PM ON, 3PM OFF...etc"; 

} 

回答

2

看看java.util.TimerTaskjava.util.Timer類。

您可以使用Timer.schedule方法來安排任務在特定時間運行。同樣來自官方文檔:

計劃指定的任務在指定的時間執行。如果 時間過去,則該任務被安排立即執行 。

schedule還有其他變種,您可以使用它們來安排任何重複執行的任務。

+0

不幸的是,Timer.schedule(參數)使用了Java的棄用Date類。我不認爲我應該使用已棄用的類:( – Time 2013-03-11 07:25:45

+0

@Time「Date」未被棄用。什麼是您的信息的來源? – 2013-03-11 07:39:43

+0

http://docs.oracle.com/javase/6/docs/api/ java/util/Date.html – Time 2013-03-11 08:03:27

1

你可以嘗試實現一種輪詢模式....讓所有設備實現共同的接口....

Interface DeviceScheduling 
{ 

    public String[] getOnTime(); 

    public String[] getOffTime(); 

    // task to be performed by device 
    public void performTask(); 
    // stop device 
    public void stopTask(); 
} 

所有這些設備添加到List<DeviceScheduling>,然後在特定的時間間隔輪詢此列表並檢查當前時間是否與getOnTime()getOffTime()返回的任何條目匹配或是否爲李。根據比賽情況,請致電performTask()stopTask()